7

MATLABバーのドキュメントには次のように記載されています。

bar(...、'style')は、バーのスタイルを指定します。「スタイル」は「グループ化」または「スタック」です。デフォルトの表示モードは「グループ化」です。

しかし、私は両方を同時に達成したいと思います。例を挙げて詳しく説明します。

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');

このコードは、次のグループ化されたbarseriesプロットを生成し、3つのバーの5つの異なるセットがグループ化されます。

ここに画像の説明を入力してください

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

そして、このコードは、上記で定義された行列の最初の列だけを使用して、次のスタックYされたbarseriesプロットを生成します。

ここに画像の説明を入力してください

これら2つをマージして、グループ化され、同時にスタックされるbarseriesプロットを取得したいと思います。したがって、望ましい結果は最初の画像のようになり、セット内の3つのバーのそれぞれが2番目の画像のように積み重ねられます。

4

3 に答える 3

7

BARにグループ化/スタックされた棒グラフの組み合わせをプロットさせる方法はありません。Yただし、バーのグループを分離したい場所でデータにゼロの行を追加し、それに応じてx軸の目盛り目盛りラベルを変更することで自分で行うことができます。次に例を示します。

>> 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

そして、これが結果の図です:

ここに画像の説明を入力してください

于 2011-05-16T14:36:43.837 に答える
4

グループvsスタックは、どちらか一方のタイプの情報です。あなたはあなたがやりたいことをするために創造的である必要があります:

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)を使用して他の棒グラフを追加します。

ここに画像の説明を入力してください

于 2011-05-16T14:37:21.303 に答える
2

この関数は非常に便利で、簡単にカスタマイズできることがわかりました。これは、グループ化およびスタックされた棒グラフの問題に対する別の洗練されたソリューションを提供すると思います。

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

于 2013-08-25T22:53:59.103 に答える