You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave中如何绘制单行堆叠柱状图?现有代码问题咨询

解决Octave单行堆叠柱状图的问题

问题出在Octave的bar函数对输入维度的处理逻辑上:当你传入1×5的向量data(1, :)并使用"stacked"参数时,Octave会把这个向量解读为5个独立的分组,每个分组只有1个数据系列,所以画出来是5个分开的柱子,而不是你想要的单个堆叠柱。

堆叠柱状图的核心逻辑是:输入矩阵的每一列对应一个分组,每一行对应一个要堆叠的系列。要实现单个堆叠柱(1个分组,5个堆叠系列),你需要调整数据的维度或者显式指定分组位置,下面是两种可行的方法:

方法1:转置单行数据为列矩阵

把1行5列的向量转成5行1列的矩阵,这样Octave会识别为5个系列对应1个分组,从而生成堆叠效果:

clf;
data = rand(4, 5);
% 转置单行数据为列矩阵
h1 = bar(data(1, :)', "stacked");
l1 = legend("Col1", "Col2", "Col3", "Col4", "Col5");
legend(l1, "location", "northeastoutside");

方法2:显式指定X轴位置

直接指定所有系列都放在同一个X轴位置(比如x=1),强制让它们堆叠到同一个柱子里,还可以给X轴加个标签让图表更清晰:

clf;
data = rand(4, 5);
% 指定X=1的位置,将所有系列堆叠在此处
h1 = bar(1, data(1, :), "stacked");
l1 = legend("Col1", "Col2", "Col3", "Col4", "Col5");
legend(l1, "location", "northeastoutside");
% 可选:设置X轴刻度标签
set(gca, 'XTick', [1], 'XTickLabel', ['Single Group']);

这两种方法都能生成你预期的单行堆叠柱状图,和第二个图的堆叠逻辑完全一致,只是只包含一个分组。

内容的提问来源于stack exchange,提问作者Rodrigo Morante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:30:35