2016-09-23 25 views
2

私はこの質問のように3D積み上げ棒グラフを作成しようとしています:3D stacked bars in Matlab。しかし、その質問とは違って、私は2の代わりに3つのデータセットを使用したいと思います。私はバーが正しく動かないか、または類似している(おそらく単純な)問題があると思います。私はTEST1、TEST2およびTEST3と呼ばれ、それぞれされているMatlab:3D積み上げ棒グラフ

3つのデータセット:あなたは中央のバーは、最大追加する必要があります見ることができるように Stacked bar chart where stacks don't shift up correctly

5 10 7 
1 100 0 
1 3 2 

10 15 10 
10 80 10 
5 5 15 

10 10 10 
20 200 20 
30 10 30 

、それらをプロットするが、これを生産します380ですが、身長はわずか280です。データセットのうちの1つのバーは、他の2つのデータセットの「内側」に表示されているように見えます。

私が使用しているコードは次のとおりです。

core=bar3(test1); 
set(core,'FaceColor',[1 0 0]); %red 

for i=1:length(core) 
    zz=get(core(i),'Zdata'); 
     k=1; 
     for j= 0:6:(6*length(core)-6) 
      zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i); 
      k=k+1; 
     end 
    set(core(i),'Zdata',zz); 
end 

hold on 

core=bar3(test2); 

set(core,'FaceColor',[0 1 1]);%cyan 
hold off 

for i=1:length(core) 
    zz=get(core(i),'Zdata'); 
    k=1; 
    for j= 0:6:(6*length(core)-6) 
     zz(j+1:j+6,:)=zz(j+1:j+6,:)+test3(k,i); 
     k=k+1; 
    end 
    set(core(i),'Zdata',zz); 
end 


hold on 
core=bar3(test3); 
set(core,'FaceColor',[1 1 0]);%yellow 
hold off 

は、どのように私はバーが適切にシフトアップするのですか?あるいは、Matlabコードを使用してデータの3D積み上げ棒グラフを作成するにはどうすればよいですか?あなたのお時間をいただきありがとうございました。最初のループで

答えて

0

は使用:

zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i)+test3(k,i); 

代わりにzz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i);

また、2番目のループで同じ文字列を使用することもできます。

+0

ありがとうございます。 –

+0

あなたは大歓迎です! –

関連する問題