簡體   English   中英

MATLAB中bar3中的圖例

[英]Legend in bar3 in MATLAB

我不知道如何在所附的代碼中創建圖例(用於顏色)?

test1=[5 10 7;
    1 100 0;
    1 3 2];

test2=[10 15 10;
    10 80 10;
    5 5 15];

test3=[10 10 10;
    20 200 20;
    30 10 30];

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

首先,我將所有core重命名為core1core2core3以對應於test1test2test3 ,並且也不要覆蓋這些句柄。 然后,如果使用例如size(core1)檢查每一個的size(core1) ,您將看到每個包含3個圖的3個句柄。 這3個顏色均相同,因此您可以選擇一個手柄並將其作為第一個參數提供給legend 所以最后您只需要添加

legend([core1(1) core2(1) core3(1)], {'A', 'B', 'C'});

完整代碼

test1=[5 10 7;
    1 100 0;
    1 3 2];

test2=[10 15 10;
    10 80 10;
    5 5 15];

test3=[10 10 10;
    20 200 20;
    30 10 30];

core1=bar3(test1);
set(core1,'FaceColor',[1 0 0]); %red
for i=1:length(core1)
    zz=get(core1(i),'Zdata');
    k=1;
    for j= 0:6:(6*length(core1)-6)
        zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i);
        k=k+1;
    end
    set(core1(i),'Zdata',zz);
end
legend({'A'});
hold on
core2=bar3(test2);
set(core2,'FaceColor',[0 1 1]);%cyan
hold off
for i=1:length(core2)
    zz=get(core2(i),'Zdata');
    k=1;
    for j= 0:6:(6*length(core2)-6)
        zz(j+1:j+6,:)=zz(j+1:j+6,:)+test3(k,i);
        k=k+1;
    end
    set(core2(i),'Zdata',zz);
end
hold on
core3=bar3(test3);
set(core3,'FaceColor',[1 1 0]);%yellow
hold off

legend([core1(1) core2(1) core3(1)], {'A', 'B', 'C'});

暫無
暫無

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

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