我有一个地形图,想要在其中表示一些数据。请参见下图:
右边用白色圆圈圈出的区域是该图其余部分的单独冲浪功能。我想做的就是更改配色方案。基于我与图分开的值,外部应该是灰度,内部应该是单一颜色。目前,我已经尝试过colormap(gray)函数,然后进行更改,但这会更改整个图。
我愿意就不同的绘图样式提出建议。 plot3而不是冲浪。因此,我必须进行这两次冲浪的数据是x,y,z点的两个列表。
如果可能的话,我还要显示一个颜色栏,该颜色栏代表圆圈区域的颜色(这将由我根据外部值进行设置)。
有人知道这样做的好方法吗?
谢谢。
编辑:
我想做的是这样的:
图片的顶部不应有深蓝色。图像将随着更多的“蓝色” Blob 而不断更新,颜色应根据外部值而变化,并且理想情况下,如果它们重叠,则会将颜色与先前的 Blob 合并。
最佳答案
您是否已从MATLAB技术支持部门看到此内容?
http://www.mathworks.com/support/solutions/en/data/1-GNRWEH/index.html
您可以编辑colorbar
属性。
g = colorbar;
get(g)
例如,
% Define a colormap that uses the cool colormap and
% the gray colormap and assign it as the Figure's colormap.
colormap([cool(64);gray(64)])
% Generate some surface data.
[X,Y,Z] = peaks(30);
% Produce the two surface plots.
h(1) = surf(X,Y,Z);
hold on
h(2) = pcolor(X,Y,Z);
hold off
% Move the pcolor to Z = -10.
% The 0*Z is in the statement below to insure that the size
% of the ZData does not change.
set(h(2),'ZData',-10 + 0*Z)
set(h(2),'FaceColor','interp','EdgeColor','interp')
view(3)
% Scale the CData (Color Data) of each plot so that the
% plots have contiguous, nonoverlapping values. The range
% of each CData should be equal. Here the CDatas are mapped
% to integer values so that they are easier to manage;
% however, this is not necessary.
% Initially, both CDatas are equal to Z.
m = 64; % 64-elements is each colormap
cmin = min(Z(:));
cmax = max(Z(:));
% CData for surface
C1 = min(m,round((m-1)*(Z-cmin)/(cmax-cmin))+1);
% CData for pcolor
C2 = 64+C1;
% Update the CDatas for each object.
set(h(1),'CData',C1);
set(h(2),'CData',C2);
% Change the CLim property of axes so that it spans the
% CDatas of both objects.
caxis([min(C1(:)) max(C2(:))])
% I added these two lines
g = colorbar
set(g,'YLim',[1 60])
最后两行是我的。其余的来自MATLAB技术支持链接。而且它将为您提供仅带有一个颜色图的颜色栏。如果您想要颜色图的灰色部分,则可以使用
set(g,'YLim',[64 128])
。关于Matlab用不同的配色方案冲浪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11286539/