Scilab:contourf 中的相同颜色图
Scilab: same colormap in contourf
当下面的程序为运行时,就变成了同一个图。
我想要相同的颜色编码。
x=-5:0.1:5;
y=-5:0.1:5;
[X,Y]=meshgrid(x,y);
z1=X.^2+Y.^2-25;
z2=X.^2+Y.^2-50;
clf();
f=gcf();
f.color_map=jetcolormap(32);
subplot(1,2,1);
contourf([],[],z1,32);
subplot(1,2,2);
contourf([],[],z2,32);
我不知道如何使用 contourf
,但是如果您可以使用 surf
,我有一个建议。
请注意,surf
生成 3D 图,但您可以将其旋转为 2D 图。作为一个表面,它具有 cdata_mapping
属性,可以从 scaled
更改为 direct
并根据以下比例缩放颜色矩阵(定义每个面的颜色)实际使用范围:
x=-5:0.1:5;
y=-5:0.1:5;
[X,Y]=meshgrid(x,y);
z1=X.^2+Y.^2-25;
z2=X.^2+Y.^2-50;
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
clf();
f=gcf();
f.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'
h.color_mode=-1; //don't draw mesh
a=gca();
a.view="2d"; //2D view instead of 3D
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'
h.color_mode=-1; //don't draw mesh
a=gca();
a.view="2d"; //2D view instead of 3D
colorbar(Zmin,Zmax);
这是适合您的解决方案,还是您在任何情况下都必须使用 contourf
?
当下面的程序为运行时,就变成了同一个图。 我想要相同的颜色编码。
x=-5:0.1:5;
y=-5:0.1:5;
[X,Y]=meshgrid(x,y);
z1=X.^2+Y.^2-25;
z2=X.^2+Y.^2-50;
clf();
f=gcf();
f.color_map=jetcolormap(32);
subplot(1,2,1);
contourf([],[],z1,32);
subplot(1,2,2);
contourf([],[],z2,32);
我不知道如何使用 contourf
,但是如果您可以使用 surf
,我有一个建议。
请注意,surf
生成 3D 图,但您可以将其旋转为 2D 图。作为一个表面,它具有 cdata_mapping
属性,可以从 scaled
更改为 direct
并根据以下比例缩放颜色矩阵(定义每个面的颜色)实际使用范围:
x=-5:0.1:5;
y=-5:0.1:5;
[X,Y]=meshgrid(x,y);
z1=X.^2+Y.^2-25;
z2=X.^2+Y.^2-50;
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
clf();
f=gcf();
f.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'
h.color_mode=-1; //don't draw mesh
a=gca();
a.view="2d"; //2D view instead of 3D
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'
h.color_mode=-1; //don't draw mesh
a=gca();
a.view="2d"; //2D view instead of 3D
colorbar(Zmin,Zmax);
这是适合您的解决方案,还是您在任何情况下都必须使用 contourf
?