彩色图像顶部的表面图(x-y平面)

时间:2014-06-16 14:22:27

标签: matlab bitmap plot

我猜,我在Matlab2013上遇到了色彩问题。我绘制了一个带有色彩图的三维表面图,我想在同一个图中在x-y平面上有一个位图(8位彩色图像)。彼此分开绘制的工作正常,但只要我在一个图中绘制它们,第一个表面图只是黑色。我想这是因为x-y平面上的RGB图像使用不同的颜色图。 Matlab中是否有选项可以在同一个图中绘制两种不同类型的图像?

surf(X,Y,density,'FaceColor','texturemap','Edgecolor','none')
colormap hot
...
%// define the location of the bitmap
xImage = [miX maX; miX maX];              %// The y data for the image corners
yImage = [miY miY; maY maY];              %// The x data for the image corners
zImage = [zDist zDist; zDist zDist];      %// The z data for the image corners  
surf(xImage,yImage,zImage,...             %// Plot the surface
    'CData',RGBImage,...
    'FaceColor','texturemap');

谢谢! 都灵

1 个答案:

答案 0 :(得分:1)

我认为这是densityzImage相对缩放的问题。我可以通过执行以下操作来复制它:

1)绘制一个surf,其中第三个输入是 n x m ,它被缩放为一些真实数据(例如-0.2到+0.2)。这会响应colormap中您所期望的变化。

2)在hold on之后,绘制另一个surf,其中第三个输入是 nxmx 3 ,就像RGB图像一样,双值在0和1之间缩放。

这会导致第一张图像变为“暗”(或者该特定色彩图中的最低颜色)。问题在于,他们共享CLim,位于同一轴,尽管RGBImage实际上没有引用色彩图。

通过缩放/标准化第一个图(您的density值)介于0和1之间(在这种情况下),这是“可修复的” - 尽管如果您想要这个快速解决方案会给您带来问题添加颜色条。或者,在绘制第一个冲浪后,首先抓住轴上的“CLim”:

trueC = get(gca,'CLim');

然后在绘制图像后将其设置回来:

set(gca,'CLim',trueC)