在Matlab中如何将彩色图例放入绘图中?
我正在用Matlab绘制一幅图,如下所示。我尝试了很多方法在图片的末尾添加漂亮的颜色图例,每种颜色代表一个变量,例如“通货膨胀”、“利率”、“汇率”等。问题是我无法正确添加它们。我绘制图表的代码附在下面 我使用命令在Matlab中如何将彩色图例放入绘图中?,matlab,plot,legend,Matlab,Plot,Legend,我正在用Matlab绘制一幅图,如下所示。我尝试了很多方法在图片的末尾添加漂亮的颜色图例,每种颜色代表一个变量,例如“通货膨胀”、“利率”、“汇率”等。问题是我无法正确添加它们。我绘制图表的代码附在下面 我使用命令 fill 绘制图形时,数据是一个矩阵(以下代码未提供,太大)。有人会教我如何在图表的底部画一个颜色图例吗?谢谢 %% Graph 1 z1 = squeeze(z(i_var(1),:,:)); xmin = x(1); xmax = x(end); ix = z1 > 0;
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;
%%图1
z1=挤压(z(i_var(1),:,:);
xmin=x(1);
xmax=x(结束);
ix=z1>0;
ymax=最大值(和(z1.*ix));
ix=z1<0;
ymin=min(和(z1.*ix));
如果ymax ymin<1e-6
结束
图(“名称”,内部名称(i_变量(1),:);
子地块(2,1,1)
绘图(x(2:end)、z1(end、:)、'k-'、'LineWidth',2)
等等
对于i=1:gend
i_1=i-1;
yp=0;
ym=0;
对于k=1:comp_nbr
zz=z1(k,i);
如果zz>0
填充物([x(i)x(i)x(i+1)x(i+1)],[yp-yp+zz-yp+zz-yp],k);
yp=yp+zz;
其他的
填充([x(i)x(i)x(i+1)x(i+1)],[ym-ym+zz-ym+zz-ym],k);
ym=ym+zz;
结束
等等
结束
结束
图(x(2:end)、z1(end、:)、'k-'、'LineWidth',2),
集合(gca,'xtick',[0 22 44 66 88 110]),
集合(gca,'xticklabel',{'1985q1','1990q3','1996q1','2001q3','2007q3','2013q1',}),标题('输出差距')
轴([0110-33])
拖延;
%%图2
z1=挤压(z(i_var(2),:,:);
xmin=x(1);
xmax=x(结束);
ix=z1>0;
ymax=最大值(和(z1.*ix));
ix=z1<0;
ymin=min(和(z1.*ix));
如果ymax ymin<1e-6
结束
子地块(2,1,2)
绘图(x(2:end)、z1(end、:)、'k-'、'LineWidth',2)
等等
对于i=1:gend
i_1=i-1;
yp=0;
ym=0;
对于k=1:comp_nbr
zz=z1(k,i);
如果zz>0
填充物([x(i)x(i)x(i+1)x(i+1)],[yp-yp+zz-yp+zz-yp],k);
yp=yp+zz;
其他的
填充([x(i)x(i)x(i+1)x(i+1)],[ym-ym+zz-ym+zz-ym],k);
ym=ym+zz;
结束
等等
结束
结束
绘图(x(2:end)、z1(end,:)、'k-'、'LineWidth',2)、集合(gca、'xtick',[02246688110])
集合(gca,'xticklabel',{'1985q1','1990q3','1996q1','2001q3','2007q3','2013q1',标题('CPI通货膨胀')
轴([0110-33])
拖延;
我不确定填充
是否有办法使用传统的图例
,因此我会尝试以下方法:在每个图形创建虚拟图后,使用它们的颜色与填充
对象相同,然后使用常规图例:
hold on
L1 = plot(NaN,NaN,'r',NaN,NaN,'b',NaN,NaN,'y');
legend(L1,'inflation', 'interest rate' ,'exchange rate');
要设置图例的位置,请参见,例如:
legend(L1,'inflation', 'interest rate' ,'exchange rate','Location','SouthOutside','Orientation','horizontal');
我会使用命令:colorbar,用于您的目的。 该命令允许使用一些输入参数选择用适当的单词表示的颜色。试试看