【问题标题】:How can I create a barseries plot using both grouped and stacked styles in MATLAB?如何在 MATLAB 中使用分组样式和堆叠样式创建条形图?
【发布时间】:2011-08-26 03:15:05
【问题描述】:

MATLAB bar documentation 声明如下:

bar(...,'style') 指定条的样式。 'style' 是 'grouped' 'stacked'。默认显示模式是“分组”。

但是,我想同时实现两者。我举个例子详细说明一下:

Y = [1.0 0.5 0.7
     2.0 1.5 2.0
     5.0 4.0 5.0
     4.0 4.0 4.5
     3.0 2.0 2.0];

bar(Y,'group');

此代码生成以下分组条形图,其中 5 组不同的 3 个条形组合在一起:

bar([repmat(0.5,5,1) Y(:,1)-0.5],'stack');

此代码仅使用上面定义的矩阵Y 的第一列生成以下堆叠条形图:

我想合并这两个,以获得一个同时分组和堆叠的 bareries 图。所以想要的结果就像第一张图片一样,一组中的三个条中的每一个都会像第二张图片一样堆叠。

【问题讨论】:

  • 您能否发布一个您希望这样显示的数据集示例?我只是很难理解你为什么要这样做。
  • 我试图在一张图上显示这两件事:1) 使用三种不同方法的每个月的成本(x 轴是月份,有 3 * 12 个不同的条形图)2) 成本明细每一个,因为总成本计算为两个元素的总和(我们称它们为静态和动态部分)通过这样做,我可以在一张图表上显示静态和动态部分在成本和总体成本降低中的分布,使用不同的方法。

标签: matlab graph bar-chart


【解决方案1】:

我无法让BAR 为您绘制组合分组/堆叠条形图。但是,您可以通过将零行添加到您的 Y 数据中您想要分隔条组的任何位置来自己完成,然后相应地修改 x 轴 tick markstick labels。这是一个例子:

>> Y = [1 2 3; ...  %# Sample data
        2 3 4; ...
        3 4 5; ...
        4 5 6; ...
        5 6 7; ...
        6 7 8; ...
        7 8 9; ...
        8 9 10; ...
        9 10 11];
>> newY = reshape([reshape(Y,3,[]); zeros(1,numel(Y)/3)],[],3)  %# Add zeroes
                                                                %#   for spacing
newY =

     1     2     3
     2     3     4
     3     4     5
     0     0     0    %# <--- Note zero rows
     4     5     6
     5     6     7
     6     7     8
     0     0     0
     7     8     9
     8     9    10
     9    10    11
     0     0     0

>> bar(newY,'stacked');  %# Create a stacked histogram
>> set(gca,'XLim',[0 12],'XTick',2:4:10,'XTickLabel',1:3);  %# Modify axes

这是结果图:

【讨论】:

    【解决方案2】:

    组与堆叠是一种非此即彼的信息。你需要有创意才能做你想做的事:

    bar(Y,'stacked','BarWidth',0.3);
    hold;
    X = Y.*abs(randn(5,3));
    bar(X,'stacked','BarWidth',0.3, 'Xdata', 1.3:1:5.3);
    Z = Y.*abs(randn(5,3));
    bar(X,'stacked','BarWidth',0.3, 'Xdata', 0.7:1:4.7);
    

    快速总结:从堆积的数据开始,确保barwidth 足够小以将数据正确地拟合到图表中,保持你的图,然后添加另一个带有数据偏移量的条形图 (Xdata)。

    【讨论】:

      【解决方案3】:

      我发现此功能非常有用且易于定制。我相信它为分组和堆叠条形图问题提供了另一种优雅的解决方案。

      http://www.mathworks.com/matlabcentral/fileexchange/32884-plot-groups-of-stacked-bars

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-13
        • 1970-01-01
        • 2017-11-01
        • 2021-11-16
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多