在scilab

时间:2017-03-07 12:45:03

标签: matlab plot scilab

我需要使用命令Plot3d在Scilab中绘制四边形面,但我无法找到在顶点处指定颜色的方法,与实际值成比例。

在Matlab的patch命令中,我可以在顶点指定一个颜色,与实数给出的值成比例(例如,值为3.6的顶点将具有与具有值的顶点不同的颜色3.2)。

在scilab中,似乎plot3D只能管理整数值。

我尝试了以下代码:

    xf = [0, 1; 1 ,2; 1, 2; 0, 1 ];
    yf = [1, 1;1, 2;1, 1;1, 1 ];
    zf = [0, 0 ; 0, 0; 5,5 ;5, 5 ];
colors = [1 1;2 2 ;3.5 3;4.5 4 ];
plot3d(xf,yf,list(zf,colors) ,[0,0,0,flag,3] )

但颜色相同,即使矩阵颜色中指定的值略有不同。

任何人都知道如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

给出的colors参数用作索引(因此为整数)来查找色彩映射中的颜色。这就是为什么它们是相同的。

在您的示例中,您可以缩放color列表并设置包含更多值的大型色彩映射表。例如

//Assuming default flags
flags=[2,8,4]
xf = [0, 1; 1 ,2; 1, 2; 0, 1 ];
yf = [1, 1;1, 2;1, 1;1, 1 ];
zf = [0, 0 ; 0, 0; 5,5 ;5, 5 ];

colors = [1 1;2 2 ;3.5 3;4.5 4 ];
// Scale colors
max_value = max(colors)
nr_of_colors = 128
scaled_colors = colors / max_value * nr_of_colors

plot3d(xf,yf,list(zf,scaled_colors) ,[0,0,0,flag,3] )

// Set colormap
fig = gcf()
fig.color_map = hotcolormap(nr_of_colors)

// To show the current colormap
getcolor()

会产生更连续的色彩图,它会反映略微不同的色彩

Continuous colormap