2016-09-23 11 views
2

Ich versuche, ein 3D-gestapeltes Balkendiagramm wie in dieser Frage zu erstellen: 3D stacked bars in Matlab. Aber im Gegensatz zu dieser Frage möchte ich 3 Datensätze anstelle von 2 verwenden. Ich denke, ich habe ein (wahrscheinlich einfaches) Problem, bei dem die Balken nicht richtig hochgeschoben werden oder etwas Ähnliches.Matlab: 3D gestapelt Balkendiagramm

Die drei Datensätze Ich habe sind test1, test2 und test3 genannt und sind jeweils:

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 

Und sie Plotten erzeugt dies: Stacked bar chart where stacks don't shift up correctly

Wie Sie die zentrale Bar sollte aufzuaddieren sehen 380 aber ist nur 280 groß. Die Balken für einen der Datensätze scheinen "innerhalb" der anderen beiden Datensätze zu liegen, was auch erklären würde, warum die Balken 3 zentrale Trennlinien haben anstelle der 2, die wir erwarten würden.

Der Code Ich verwende ist:

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 

Wie kann ich die Stäbe richtig hochschalten? Oder wie kann ich Matlab-Code verwenden, um ein 3D-gestapeltes Balkendiagramm für die Daten zu erstellen? Jede Hilfe sehr geschätzt, danke für Ihre Zeit.

Antwort

0

In den ersten Schleifen verwenden:

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

anstelle von zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i);.

Oder Sie können die gleiche Zeichenfolge in den zweiten Schleifen verwenden.

+0

Vielen Dank, du schöner Mann. –

+0

Gern geschehen! –