添加冲浪图时,轮廓颜色与颜色条不对应
Contour colors don't correspond to color bar when a surf plot is added
下面是一些代码,尽可能简化了我的问题。它用两个图做一个子图,你会注意到右边的图(只有等高线)在等高线颜色和颜色条之间有正确的相关性,但是当添加一个表面时(左图)颜色不再匹配。
备注:
- 我试过
contourslice
但我得到了相同的结果。我也在下面发布了代码。
- 颜色的偏离程度似乎取决于轮廓数据本身的值。如果你用
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])
问题可能是因为冲浪图改变了你的图的颜色决定值。通过设置固定的色轴,您可以避免所有的误解。
下面是一些代码,尽可能简化了我的问题。它用两个图做一个子图,你会注意到右边的图(只有等高线)在等高线颜色和颜色条之间有正确的相关性,但是当添加一个表面时(左图)颜色不再匹配。
备注:
- 我试过
contourslice
但我得到了相同的结果。我也在下面发布了代码。 - 颜色的偏离程度似乎取决于轮廓数据本身的值。如果你用
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])
问题可能是因为冲浪图改变了你的图的颜色决定值。通过设置固定的色轴,您可以避免所有的误解。