2017-01-18 5 views
0

Matlabには、各サブプロットごとに個別のカラーマップを設定する機能があります。最初の引数のHAXが、軸がハンドルの親Figureため、その後のカラーマップである場合CMAP =カラーマップ(HAX、...) :Octaveのサブプロットごとにカラーマップを分離します

機能ファイル:同じ機能が

Octave docsすなわち、次のフレーズで記述しますhaxが照会または設定されます。

しかし、私は次のコードを実行しようとすると、何らかの理由ですべてのサブプロットに対して単一のカラーマップを持つことになります。

clear -all; 
clc; 

img = zeros(128, 128); 
img(64,64) = 0.2; 
rad = radon(img); 

x = 1; 
y = 4; 


s1 = subplot(y,x,1); imagesc(img); 
colormap(s1, gray); 
s2 = subplot(y,x,2); imagesc(rad); 
colormap(s2, hot); 
colorbar; 

line_img = zeros(128, 128); 
line_img(64, 32:64) = 0.5; 
line_img(63, 32:64) = 0.4; 
line_img(63, 32:64) = 0.2; 
line_rad = radon(line_img); 
s3 = subplot(y,x,3); imshow(line_img); 
colormap(s3, gray); 
s4 = subplot(y,x,4); imagesc(line_rad); 
colormap(s4, hot); 

colorbar; 

助けてください。私はグレースケールでソースイメージを持ち、ラドンは "ホット"でイメージを変換することを期待しています。何らかの理由でグレースケールのように最初のサブプロットを取得しています(それは実際にはありません。値0.2でポイントを初期化し、オクターブで純粋な白色を得ますが、かなり暗いグレーが予想されます)。 「ホット」カラーマップが設定されている。

+0

ドキュメントはあなたが軸を渡す場合*親がいることを扱うことを言いますFigureの*カラーマップが変更されました。これは、同じ図形内にあるので、カラーマップが異なる各軸と同じではありません。 – Suever

答えて

3

文書からその行を少し読めば、親のFigureのカラーマップが変更された軸ハンドルを渡すとそれが表示されます。これは、同じ図形内にあるので、カラーマップが異なる各軸と同じではありません。

機能ファイル:cmap = colormap (hax, …)最初の引数のHAXは軸がハンドルの場合は、は、HAXの親フィギュアのためのカラーマップは、照会またはに設定されています。

現在のところ、Octaveは、MATLABで最近導入されたこの機能をサポートしていません。

imshowで表示する前に画像をRGB画像に変換してから、Figureのカラーマップは無関係です。最初にインデックス付きイメージ(gray2indを使用)に変換し、次にind2rgbを使用してRGBに変換します。ちなみに、全白imshowに入力タイプdoubleである場合、すべての値が0の場合と1の間であることが期待されるということであるように、あなたの最初のグレースケール画像は、最大表示されていることを理由として

% To display the grayscale image 
rgb = ind2rgb(gray2ind(img), gray); 
imshow(rgb); 

あなたがあなたのデータに一致するようにカラーの範囲を拡大したいことを指定するには、あなたがimshowの第2の入力を使用することができ、この動作を変更したい

imshow(img, []) 
+0

私の悪い、申し訳ありません。ですから、現在matlabには何も実装されていません。 MATLAB R2014bまたはそれ以降のリリースを使用している場合、関数 "colormap"は軸に対するハンドルを入力として受け入れ、各軸に異なるカラーマップを設定できるようにします。たとえば、次のコードスニペットは、異なるカラーマップを持つ2つのサブプロットをプロットします。 ax1 = subplot(2,1,1); サーフ(ピーク) コロマップ(ax1、スプリング) ' – Roman

+0

@RomanいいえOctaveにはありません。 Octaveのドキュメントはこれについて非常に明確です。実際に投稿に直接貼り付けたドキュメント。 – Suever

+0

ありがとうございました。 – Roman