9

Y=rand(1000,1)X=Y-rand(1000,1)およびの3 つのベクトルがありACTid=randi(6,1000,1)ます。グループ値 1:6 (ACTid から) に対応する Y と X のグループで箱ひげ図を作成したいと思います。

これはむしろその場しのぎで、見栄えが悪い

for ii=
dummyY(ii)={Y(ACTid==ii)};
dummyX(ii)={X(ACTid==ii)}
end

今、セルにデータがありますが、箱ひげ図にグループ化する方法がわかりません。何かご意見は?

aboxplot このような関数を見つけましたが、それは望ましくありません。組み込みの boxplot 関数が必要です。これを matlab2tikz に変換していて、これがうまくいかないからです。

ここに画像の説明を入力

編集

Oleg のおかげで、グループ化された boxplot ができました... しかし、ラベルはすべて歪んでいます。

xylabel = repmat({'Bleh','Blah'},1000,1); % need a legend instead, but doesn't appear possible
boxplot([Y(:,end); cfu], {repmat(ACTid,2,1), xylabel(:)} ,'factorgap',10,'color','rk')
set(gca,'xtick',1.5:3.2:50)
set(gca,'xticklabel',{'Direct care','Housekeeping','Mealtimes','Medication','Miscellaneous','Personal care'})
>> ylabel('Raw CFU counts (Y)')

ここに画像の説明を入力

凡例を追加するには?

4

2 に答える 2

10

箱ひげ図でデータをグループ化する際にも同じ問題がありました。私のさらなる制約は、グループが異なればデータポイントの量も異なるということでした。私が見つけたチュートリアルに基づいて、これは私があなたと共有したかった素晴らしい解決策のようです:

x = [1,2,3,4,5,1,2,3,4,6];
group = [1,1,2,2,2,3,3,3,4,4];
positions = [1 1.25 2 2.25];
boxplot(x,group, 'positions', positions);

set(gca,'xtick',[mean(positions(1:2)) mean(positions(3:4)) ])
set(gca,'xticklabel',{'Direct care','Housekeeping'})

color = ['c', 'y', 'c', 'y'];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
   patch(get(h(j),'XData'),get(h(j),'YData'),color(j),'FaceAlpha',.5);
end

c = get(gca, 'Children');

hleg1 = legend(c(1:2), 'Feature1', 'Feature2' );

さまざまなグループ サイズの色分けされたグループ化された箱ひげ図

ここにチュートリアルへのリンクがあります。

于 2014-04-01T07:44:50.043 に答える