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

时间:2015-03-10 16:11:50

标签: matlab plot matlab-figure colorbar

下面是一些代码,可以重新创建我的问题,因为我可以简化。它有一个带有两个图的子图,您会注意到右侧的图(仅轮廓)在轮廓颜色和颜色条之间具有正确的相关性,但是当添加曲面时(左图)颜色不再匹配。

注意:

  1. 我尝过了contourslice,但得到了相同的结果。我也发布了下面的代码。
  2. 颜色的距离似乎取决于轮廓数据本身的值。如果用peaks替换轮廓数据,它可以正常工作。然而,这并没有解决潜在的问题。
  3. 使用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])
    

    感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

只需设置caxis属性即可:

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

enter image description here

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