Scilab:两个子图的相同颜色条

时间:2014-11-15 00:29:16

标签: matlab scilab colorbar surface

我有两个变量(z1和z2),它们是x和y的函数。 我想使用相同的颜色条在两个子图中绘制它们。 这两个变量具有不同的最小值和最大值。 所以,我想将颜色条定义为以(z1,z2)的最小值开始,并以(z1,z2)的最大值结束。 因此我使用:

figure=scf();
figure.color_map=jetcolormap(32);
subplot1=subplot(121);
surf(x,y,z1);
subplot2=subplot(122);
surf(x,y,z2);
colorbar(min(min(min(z1)),min(min(z2))),max(max(max(z1)),max(max(z2))));

但是这样做,我使用他们自己的颜色条得到两个图,它们分别对应于它们的最小值和最大值。 我知道我们可以在Matlab上使用属性作为caxis和climb来获得这种行为。但是我不知道Scilab相当于这些属性。

如果用Scilab的基本版本无法做到这一点,请告诉我一些Scilab允许这样做的图书馆。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试更改'缩放'的cdata_mapping直接'并根据使用的实际范围缩放颜色矩阵(定义每个刻面的颜色):

x=[0:0.3:2*%pi];   //example data
[X,Y]=ndgrid(x,x);
Z1=sin(x')*cos(x);    //first data set
Z2=Z1./2;    //second dataset is half in amplitude

Zmin=min(min(Z1),min(Z2));    //Absolut minimum of all data sets
Zmax=max(max(Z1),max(Z2));    //Absolut maximum of all data sets
nc=100;   //number of colors in colormap

tabl=scf();
tabl.color_map=jetcolormap(nc);
subplot(1,2,1);
surf(X,Y,Z1);
h=gce();
cm=h.data.color;   //color matrix
h.data.color=((cm-Zmin)./(Zmax-Zmin)).*(nc-1)+1;   //scale color matrix & convert to color number
h.cdata_mapping="direct";   //change color mapping from 'scaled' to 'direct'
colorbar(Zmin,Zmax);

subplot(1,2,2);
surf(X,Y,Z2);
h=gce();
cm=h.data.color;   //color matrix
h.data.color=((cm-Zmin)./(Zmax-Zmin)).*(nc-1)+1;   //scale color matrix & convert to color number
h.cdata_mapping="direct";   //change color mapping from 'scaled' to 'direct'
colorbar(Zmin,Zmax);