【问题标题】:Change the colors of a bar histogram in Scilab在 Scilab 中更改条形直方图的颜色
【发布时间】:2022-08-15 02:13:44
【问题描述】:

我有一个 40*2 矩阵,我想在 SCILAB 中以条形格式表示它。 我希望将数据堆叠起来。

所以我检查并使用了 bar 函数,现在它是这样的:

bar(Data,\'stacked\');

我想通过为图表的每个条形图提供不同的颜色对来自定义图表的颜色。

我尝试使用 scilab 帮助中建议的“M 字符串向量”,但正如我预期的那样,它只考虑了指定的前两种颜色。

bar(Data,[\'yellow\',\'red\',\'cyan,\'black\'],\'stacked\']

这里有没有人可能知道我该怎么做? 非常感谢提前

编辑:所以感谢 S. Gougeon 我可以做到。但是现在我想使用 barh() 函数而不是 bar()。 我试图只改变barh,但显然它没有用。 然后我试着用一个酒吧做到这一点:

y=[40 60]; barh(1,y,\'stacked\');

我得到以下图像和这些警告消息: 警告:转置行向量 Y 以获得兼容的尺寸 警告:转置数据矩阵 Y 以获得兼容的维度

我不知道为什么会出现这些警告,因为它可以正确使用 bar(); barh() 函数的帮助没有区别。 而且图表上只有第二个数据,我还是不知道为什么。

  • 除了“红色”和“黄色”之外,您还不清楚 40 条中的“青色”和“黑色”。你想要一个超过 2 的小节是青色+黑色而不是黄色+红色吗?或者还有什么?
  • 是的,这就是想法。我想要黄色+红色的小节1,青色+黑色的小节2,等等......

标签: bar-chart scilab


【解决方案1】:

如果要将任何条的颜色对更改为下一个,则必须逐个绘制条。这是一个例子:

clf
n = 30;
colors = ["blue" "magenta" "green" "cyan" "red" "yellow" "pink" "linen" "bisque" "scilabcyan3" "lavender" "deepskyblue" "slateblue" "skyblue" "turquoise" "palegreen" "white" "scilabmagenta3" "scilabbrown2" "scilabpink4" "khaki" "indianred"];
C = colors(grand(n,2,"uin", 1,size(colors,"*")));

y = rand(1,n)*100;
y = [y ; 100-y]';
drawlater
for i = 1:n
    bar(i, y(i,:), 0.8, C(i,:), "stacked");
end
gca().x_ticks = tlist(["ticks" "locations" "labels"],1:n, string(1:n));
gca().tight_limits(1) = "on";
drawnow

【讨论】:

  • 非常感谢这个例子,它对我非常有用。如果你有任何机会也知道如何使用 barh() 来做到这一点,那就太好了,因为当我尝试使用这种方法时,错误消息说 x 和 y 的维度存在问题; x 只是一个数字。
【解决方案2】:

对于barh() 问题:

  • 请注意警告已经是reported
  • 毫不犹豫地报告显示不良

这个可以通过使用 bar() 来解决,然后将轴旋转 90°:

gca().rotation_angles(2) = 0;

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2011-08-03
    • 2012-01-19
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2021-05-25
    相关资源
    最近更新 更多