2012-10-04 13 views
5

私は広範囲の値を持ち、散布(x、y、z)としてプロットしている間、z軸を示すカラーバーは広い範囲の値を示しています。カラーバーの範囲を変更する方法はありますか? 私はプロットするために私のコードの以下の部分を持っている、私はまた、ログプロットをプロットするつもりです。たとえば。私はログプロットの範囲を最大値の14に設定したいと思っています。カラーバーの範囲を手動で設定する方法は?

値を表示したくない場合があります。カラーバーは限られた範囲、例えば14から最大までを有する。現在、ログプロットでは9から最大まで表示されています。

scatter(x(1:end-1), y(1:end-1), 5, gnd); 

title('G plot (m^-^2)'); 

colorbar('eastoutside'); 

xlabel(' X-axis (microns)'); 

ylabel('Y-axis (microns)'); 

figure; 

log_g=log10(gnd); 

scatter(x(1:end-1), y(1:end-1), 5,log_g); 

colorbar('eastoutside'); 

xlabel(' X-axis (microns)'); 

ylabel('Y-axis (microns)'); 

title('G Density, log plot (m^-^2)'); 
+0

それはあなたが望むものを非常に明確ではありません。カラーバーの色を変更したいのですか、一部の値がまったく表示されないようにしますか? – Junuxx

+0

いくつかの値を表示したくない場合があります。カラーバーは限られた範囲、例えば14から最大までを有する。現在、ログプロットでは9から最大まで表示されています。 – rcty

+0

プロットから表示したくないポイントを削除しないのはなぜですか? – slayton

答えて

10

caxisはあなたが探しているコマンドだと思います。使用方法:このようなcaxisを使用

caxis([minValue maxValue]) 

、範囲[minValue maxValue]外のすべての値は、それぞれ、カラーマップの最小または最大値で着色されます。

colorbarと友人はcolormapを使用しているため、使用する色数を調整するには、現在のカラーマップを調整する必要があります。そのように、この操作を行います:caxisでこれを組み合わせるもちろん

%# get current colormap 
map = colormap; 

%# adjust for number of colors you want 
rows = uint16(linspace(1, size(map,1), NUM_COLORS)) ; 
map = map(rows, :); 

%# and apply the new colormap 
colormap(map); 

は、最も強力です。

あなたが範囲外のいくつかの値を表示したくない場合は、それはそれはあなた次第です、colorbarまたはcaxisのための仕事ではありません - あなたはすべての値は、あなたドンようにプロットのデータを調整する必要があります'がプロットされたい場合は、NaNです。そうすることで、Matlabはこれらのデータをプロットしたくないことを理解します。

data(indices_to_data_not_to_plot) = NaN; 
surf(x,y,data); %# or whatever you're using 
+0

ええ、私はそれを使用していましたが、私はcaxis([14 16])のような5つの値しか表示しないようにしたいと思っています14 14.5 15 15.5 16値が表示されます – rcty

+0

@rcty:そうです。カスタムカラーマップを定義してから編集しなければなりません。 –

0

このようなことはどうですか?

% don’t know why, but apparently your x and y are one value too long? 
x = x(1:end-1); y = y(1:end-1); 

% only plot values of 14 or higher 
scatter(x(gnd>=14), y(gnd>=14), 5, gnd(gnd>=14); 
+0

実際には、カラーバーに表示されているz軸(gnd)...しかし、私もメソッドを試してみましたが、それは仕事をしませんでした – rcty

+0

はい、これはgndが14以上のxとyの値を選択します。すべてのデータポイントgnd <14の場合は省略されています。私は同じフィルタをgndに適用するのを忘れてしまったのを見る。修正されました。 – Junuxx

0

これを試してみてください:

cmap = colormap; % get current colormap 
cmap=cmap([min max],:); % set your range here 
colormap(cmap); % apply new colormap 
colorbar(); 
関連する問題