Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何手动设置颜色栏中的范围?_Matlab_Plot_Colorbar - Fatal编程技术网

Matlab 如何手动设置颜色栏中的范围?

Matlab 如何手动设置颜色栏中的范围?,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

我有一个大范围的值,当以散点(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)');

我相信,
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应用相同的过滤器。更正。