问题:如何在Matlab中,将图例绘制成多行多列的?
查找资料过程中发现,
1)有的方法要求多个plot中横坐标具有相同的长度
比如:https://blog.csdn.net/xgf415/article/details/56480011
2)高版本中,部分函数报错(应该可以改正)
比如:https://blog.csdn.net/faaronzheng/article/details/46793523
本文根据需要找到一个可靠的解决方法,现整理如下:
优点:每个plot互相独立;代码量少,易于操作;
参考:https://blog.csdn.net/davyhwang/article/details/37660073
程序示例:第一行一个图例,第二行两个图例且水平放置;
%%功能:绘制多个legend
figure;
x = 1:10;
p1 = plot(x,2.*x,'k-'); %真实RUL
hold on;
p2 = plot(x,4.*x,'b-'); %改进距离度量
p3 = plot(x,8.*x,'r-'); %余弦相似度+距离
% ============= Legend 1 :
hg1 = legend('第一条');
set(hg1,'FontSize',12,'Location', 'SouthOutside','box','off');
%注:将legend放在图外面时,Legend 1不能通过鼠标移动,只能通过代码调整位置
% ============= Legend 2 :
ah2 = axes('position',get(gca,'position'),'visible','off');
hg2 = legend(ah2, [p2 p3], '第二条', '第三条');
set(hg2,'FontSize',12,'Location', 'SouthOutside',...
'Orientation','horizontal','box','off');
说明:
1)第一个图例只需获取legend的句柄,然后对齐进行设置;
2)后面的图例均需要三行即
ah2 = axes('position',get(gca,'position'),'visible','off'); %固定写法,只需更改返回值。必须有!!!
hg2 = legend(ah2, [p2 p3], '第二条', '第三条'); %绘制图例,[p2 p3]表示绘制哪几个曲线的图例
set(hg2,...) %设置各种参数
比如:再添加一个图例
ah3 = axes('position',get(gca,'position'),'visible','off');
hg3 = legend(ah3, [p4 p5 p6], '第四条', '第五条','第六条');
set(hg3,'FontSize',12,'Location', 'SouthOutside',...
'Orientation','horizontal','box','off');
通过绘制多个legend,达到m行n列的图例效果;
进一步,在figure的“图像属性”状态下,可以进行更多的操作。