簡體   English   中英

Matlab:3D堆疊條形圖

[英]Matlab: 3D stacked bar chart

我正在嘗試創建一個3D堆疊的條形圖,如下所示: Matlab中的3D堆疊的條形圖 但是,與該問題不同的是,我想使用3個數據集而不是2個。我認為我有一個(可能很簡單)的問題,即條形圖無法正確上移或出現類似情況。

我擁有的三個數據集分別稱為test1,test2和test3,分別是:

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。 其中一個數據集的條形似乎呈現在其他兩個數據集的“內部”,這也可以解釋為什么這些條形具有3條中央分隔線而不是我們期望的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堆疊條形圖? 非常感謝您的幫助,感謝您的寶貴時間。

在第一個循環中使用:

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

或者,您可以在第二個循環中使用相同的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM