0

以下のようにMatlabで絵を描いています。写真の最後に素敵な色の凡例を配置する方法をたくさん試しました。各色は変数を表します。たとえば、「インフレ」、「金利」、「為替レート」などです。問題は、それらを正しく追加できなかったことです。グラフを描画する私のコードを以下に添付します。

私はコマンドを使用します

fill

グラフを描画すると、データは行列です(次のコードでは提供されていません。大きすぎます)。グラフの下部に色の凡例を描く方法を教えてくれる人はいますか? ありがとう!

ここに画像の説明を入力

%% Graph 1
z1 = squeeze(z(i_var(1),:,:));
xmin = x(1);
xmax = x(end);
ix = z1 > 0;
ymax = max(sum(z1.*ix));
ix = z1 < 0;
ymin = min(sum(z1.*ix));
if ymax-ymin < 1e-6
end

  figure('Name',endo_names(i_var(1),:)); 
subplot(2,1,1)
plot(x(2:end),z1(end,:),'k-','LineWidth',2)
hold on;
for i=1:gend
    i_1 = i-1;
    yp = 0;
    ym = 0;
    for k = 1:comp_nbr 
        zz = z1(k,i);
        if zz > 0
            fill([x(i) x(i) x(i+1) x(i+1)],[yp yp+zz yp+zz yp],k);
            yp = yp+zz;
        else
            fill([x(i) x(i) x(i+1) x(i+1)],[ym ym+zz ym+zz ym],k);
            ym = ym+zz;
        end
        hold on;
    end
end
plot(x(2:end),z1(end,:),'k-','LineWidth',2),
    set(gca,'xtick',[0 22 44 66 88 110]),
   set(gca,'xticklabel',{'1985q1', '1990q3', '1996q1', '2001q3', '2007q3',    '2013q1'}),title('Output gap')

axis([0 110 -3 3])
hold off;






%% Graph 2
z1 = squeeze(z(i_var(2),:,:));
xmin = x(1);
xmax = x(end);
ix = z1 > 0;
ymax = max(sum(z1.*ix));
ix = z1 < 0;
ymin = min(sum(z1.*ix));
if ymax-ymin < 1e-6
end

subplot(2,1,2)
plot(x(2:end),z1(end,:),'k-','LineWidth',2)
hold on;
for i=1:gend
    i_1 = i-1;
    yp = 0;
    ym = 0;
    for k = 1:comp_nbr 
        zz = z1(k,i);
        if zz > 0
            fill([x(i) x(i) x(i+1) x(i+1)],[yp yp+zz yp+zz yp],k);
            yp = yp+zz;
        else
            fill([x(i) x(i) x(i+1) x(i+1)],[ym ym+zz ym+zz ym],k);
            ym = ym+zz;
        end
        hold on;
    end
end
plot(x(2:end),z1(end,:),'k-','LineWidth',2),set(gca,'xtick',[0 22 44 66 88 110])  
set(gca,'xticklabel',{'1985q1', '1990q3', '1996q1', '2001q3', '2007q3', '2013q1'}), title('CPI inflation')

axis([0 110 -3 3])
hold off;
4

2 に答える 2