Matlab 如何手动设置颜色栏中的范围?
我有一个大范围的值,当以散点(x,y,z)打印时,显示z轴的颜色栏显示了一个大范围的值,现在我对较低范围的值不感兴趣。是否有任何方法可以更改颜色栏中的范围。 我有下面的部分代码要绘制,我还打算绘制日志图。例如,我想将日志图中的范围设置为最大值14Matlab 如何手动设置颜色栏中的范围?,matlab,plot,colorbar,Matlab,Plot,Colorbar,我有一个大范围的值,当以散点(x,y,z)打印时,显示z轴的颜色栏显示了一个大范围的值,现在我对较低范围的值不感兴趣。是否有任何方法可以更改颜色栏中的范围。 我有下面的部分代码要绘制,我还打算绘制日志图。例如,我想将日志图中的范围设置为最大值14 我希望一些值根本不显示。因此,颜色栏的范围有限,例如从14到最大值。目前,它在对数图中显示为从9到最大值 scatter(x(1:end-1), y(1:end-1), 5, gnd); title('G plot (m^-^2)'); color
我希望一些值根本不显示。因此,颜色栏的范围有限,例如从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)');
我相信,
caxis
是您正在寻找的命令。用法:
caxis([minValue maxValue])
像这样使用caxis
时,范围[minValue maxValue]
之外的所有值将分别在颜色映射中以最低值或最高值着色
由于colorbar
和朋友使用colormap
,如果要调整使用的颜色数量,必须调整当前的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
这个怎么样
% 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);
试试这个:
cmap = colormap; % get current colormap
cmap=cmap([min max],:); % set your range here
colormap(cmap); % apply new colormap
colorbar();
你想要什么还不是很清楚。是否要更改颜色栏中的颜色,还是完全不显示某些值?我希望完全不显示某些值。因此,颜色栏的范围有限,例如从14到最大值。目前,它在对数图中的显示范围是从9到最大。为什么不从图中删除您不希望显示的点?我如何才能做到这一点?我有一个1600000行的矩阵(Mx1),如何指导我的程序不考虑这些点之间的特定点,而在绘图时?YUP,我已经用过了,但是我希望彩条只显示5个值,比如CAXIS([14,16)],我只想要14个14.5,15,15.5个16值来显示。up@rcty:啊,就像这样。你必须定义一个自定义的颜色映射,让我来编辑。实际上,它是颜色条上显示的z轴(gnd)…但我也尝试了你的方法,它不起作用是的,这选择了gnd大于或等于14的x和y值。gnd<14的所有数据点均被忽略。我发现我忘了对gnd应用相同的过滤器。更正。