我有两个变量(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允许这样做的图书馆。
感谢您的帮助。
答案 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);