【发布时间】:2020-05-27 05:10:55
【问题描述】:
如果我这样做
bar([1 2 3 4 5;2 3 4 5 1], 'stacked')
我希望能够类似地绘制一个只有一个条形的堆叠条形图,但如果我尝试这样
bar([1 2 3 4 5], 'stacked')
那么如何制作单条堆叠条形图?
【问题讨论】:
标签: matlab bar-chart matlab-figure
如果我这样做
bar([1 2 3 4 5;2 3 4 5 1], 'stacked')
我希望能够类似地绘制一个只有一个条形的堆叠条形图,但如果我尝试这样
bar([1 2 3 4 5], 'stacked')
那么如何制作单条堆叠条形图?
【问题讨论】:
标签: matlab bar-chart matlab-figure
【讨论】:
bar(1,[1 2 3 4 5], 'stacked') 不被接受。它给出了一个错误X must be same length as Y
bar(1, [1 2 3 4 5], 'stacked') 也不被接受。所以这是 R2019b 的补充
Daniel's 答案是可行的方法,但它仅适用于最新的 Matlab 版本,从 R2019b 开始。
Ander's hacky 解决方案通过创建第二个不可见的条来工作。这有副作用;例如axis auto 将扩展轴。
以下是避免这些问题的一种更巧妙的方法。它创建两个条形图,然后通过更改图形对象的数据删除第二个条形图:
values = [1 2 3 4 5];
h = bar([values(:).'; NaN(1, numel(values))], 'stacked');
XData = vertcat(h.XData);
XData = num2cell(XData(:,1));
[h.XData] = XData{:};
YData = vertcat(h.YData);
YData = num2cell(YData(:,1));
[h.YData] = YData{:};
【讨论】:
似乎没有直接的解决方案!这可能会有所帮助:
bar([1,2,3,4,5,6,7,8,9,10,11,12,13; nan(1,13)], 'Stacked');
set(gca,'xtick',1,'xlim',[0.25 1.75]);
【讨论】:
黑客解决方案:
bar([1 2 3 4 5;0 0 0 0 0], 'stacked')
set(gca,'xlim',[0.25 1.75])
【讨论】: