web-dev-qa-db-ja.com

カラーバーの範囲を手動で設定するにはどうすればよいですか?

私は広範囲の値を持っており、散布図(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)');
6
rcty

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

caxis([minValue maxValue]) 

このようにcaxisを使用すると、範囲外のすべての値は[minValue maxValue]は、カラーマップの最小値または最大値でそれぞれ色付けされます。

colorbarとその仲間はcolormapを使用しているため、使用する色の数を調整する場合は、現在のカラーマップを調整する必要があります。このようにしてください:

%# 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);

もちろん、これをcaxisと組み合わせるのが最も強力です。

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

data( indices_to_data_not_to_plot )  = NaN;
surf(x,y,data);  %# or whatever you're using
11
Rody Oldenhuis

これはどう?

% 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
Junuxx

これを試して:

cmap = colormap; % get current colormap
cmap=cmap([min max],:); % set your range here
colormap(cmap); % apply new colormap
colorbar();
0
ppa007hot