添加冲浪图时,轮廓颜色与颜色条不对应

Contour colors don't correspond to color bar when a surf plot is added

下面是一些代码,尽可能简化了我的问题。它用两个图做一个子图,你会注意到右边的图(只有等高线)在等高线颜色和颜色条之间有正确的相关性,但是当添加一个表面时(左图)颜色不再匹配。

备注:

  1. 我试过 contourslice 但我得到了相同的结果。我也在下面发布了代码。
  2. 颜色的偏离程度似乎取决于轮廓数据本身的值。如果你用 peaks 替换我的轮廓数据,它工作正常。然而,这并没有解决根本问题。

代码使用 contour:

clear all; close all; clc

%define box coordinates
bx = [0 1 1 0 0;0 1 1 0 0]-.5;
by = [0 0 1 1 0;0 0 1 1 0]-.5;
bz = [0 0 0 0 0;1 1 1 1 1]-.5;

%make contour data
[x,y] = meshgrid(-1:.5:1,-1:.5:1);
con = (x.^2+y.^2);

figure(1)
subplot(1,2,1)
box = surf(bx,by,bz); %draw box
set(box,'FaceColor',[1 1 1],'FaceAlpha',1,'EdgeAlpha',0,'EdgeColor',[.5 .5 .5])
hold on
camlight(30,70)

contour(x,y,con) %draw contour
colorbar
axis([-1 1 -1 1 -1 1])
axis equal

subplot(1,2,2)
contour(x,y,con)
axis([-1 1 -1 1])
axis equal
colorbar
set(gcf,'outerposition',[150   150   800   300])

使用 contourslice 而不是 contour 的代码(同样的问题)

clear all; close all; clc

%define box coordinates
bx = [0 1 1 0 0;0 1 1 0 0]-.5;
by = [0 0 1 1 0;0 0 1 1 0]-.5;
bz = [0 0 0 0 0;1 1 1 1 1]-.5;

x = -1:.5:1;
y = x;
z = x;
%make contour data
[xg,yg,zg] = ndgrid(x,y,z);
V = 3-(xg.^2+yg.^2+zg.^2);

figure(1)
subplot(1,2,1)
box = surf(bx,by,bz); %draw box
set(box,'FaceColor',[1 1 1],'FaceAlpha',1,'EdgeAlpha',0,'EdgeColor',[.5 .5 .5])
hold on
camlight(30,70)

contourslice(x,y,z,V,[],[],0) %draw contour
colorbar
axis([-1 1 -1 1 -1 1])
axis equal

subplot(1,2,2)
contour(x,y,V(:,:,3))
axis([-1 1 -1 1])
axis equal
colorbar
set(gcf,'outerposition',[150   150   800   300])

感谢您的帮助!

只需根据需要设置 caxis 属性:

colorbar
caxis([0 2])
...
colorbar
caxis([0 2])

问题可能是因为冲浪图改变了你的图的颜色决定值。通过设置固定的色轴,您可以避免所有的误解。