2017-07-05 9 views
0

添付されたコードで凡例(色)を作成する方法がわかりませんか?MATLABのbar3の凡例

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 
+0

を追加する必要があります。 – Reza

+0

私はここ(https://stackoverflow.com/questions/39666151/matlab-3d-stacked-bar-chart)から取ったより単純なコードに置き換えました。上記のコードをコピー&ペーストして実行してください。私はちょうどあなたが図で見ることができる2つの異なった色のための伝説を持ってほしいです! – Reza

+0

[Matlab:3Dスタックバーチャート](https://stackoverflow.com/questions/39666151/matlab-3d-stacked-bar-chart)の可能な複製 – EBH

答えて

0

まず、私はtest1test2test3に対応するcore1core2core3にすべてcoreの名前を変更するだろう、ともハンドルを上書きしません。次に、これらのそれぞれのサイズをたとえばsize(core1)の場合、3つのプロットに3つのプロットが含まれています。 3つはすべて同じ色ですので、1つのハンドルを選択して最初の引数としてに入力するだけです。最後にあなたはすぐ上にそれを参照してください

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