我有一个地形图,想要在其中表示一些数据。请参见下图:

右边用白色圆圈圈出的区域是该图其余部分的单独冲浪功能。我想做的就是更改配色方案。基于我与图分开的值,外部应该是灰度,内部应该是单一颜色。目前,我已经尝试过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/

10-11 13:51