buysnow 2023-02-25 18:19 采纳率: 68.8%
浏览 30

matlab画图,legend只跟随最后一张图

我用matlab画张图,legend只跟随最后一张图,我想让legend跟随所有子图,放在所有图的正上面,怎么操作呀

subplot(131)
plot(x,50*sin(x),'k',x,50*cos(x),'m',x,20*x,'g',x,x.^2,'r',x,exp(x),'p');
subplot(132)
plot(x,50*sin(x),'k',x,50*cos(x),'m',x,20*x,'g',x,x.^2,'r',x,exp(x),'p');
subplot(133)
plot(x,50*sin(x),'k',x,50*cos(x),'m',x,20*x,'g',x,x.^2,'r',x,exp(x),'p');
lgd = legend('标签1','标签2','标签3','标签4','标签5','Location','NorthOutside')  % 注意这一行的句尾不加分号;可以显示legend的参数
lgd.NumColumns = 3;
lgd.Location='northoutside';

img

但是我想要的效果是下面这个图,legend在所有子图上方

img

  • 写回答

3条回答 默认 最新

  • Taylor 淡定哥 2023-02-25 18:30
    关注

    要在所有子图上方添加一个图例(legend),可以使用以下步骤:

    1.为每个子图添加一个标签(label):在绘制每个子图时,使用“label”参数来设置每个曲线的标签。例如:plot(x,y,'label','曲线1')。

    2.合并所有的标签(label):在所有的子图都绘制完成后,使用“h”变量来捕获每个子图的句柄(handle),并将所有的标签合并成一个单一的字符串,如下所示:

    h = findobj(gcf,'type','axes');
    allLabels = [];
    for i = 1:length(h)
        allLabels = [allLabels, h(i).Children];
    end
    labels = {allLabels.DisplayName};
    
    
    

    3.将图例添加到顶部:最后,使用“legend”函数将标签添加到顶部。注意,需要将标签的字符串数组作为第一个参数传递给“legend”函数。

    
    legend(labels,'Location','northoutside','Orientation','horizontal')
    
    

    完整的代码示例如下所示:

    % 绘制第一个子图
    subplot(2,2,1)
    x = 0:0.1:pi;
    y = sin(x);
    plot(x,y,'DisplayName','曲线1')
    legend('show')
    
    % 绘制第二个子图
    subplot(2,2,2)
    x = 0:0.1:pi;
    y = cos(x);
    plot(x,y,'DisplayName','曲线2')
    legend('show')
    
    % 绘制第三个子图
    subplot(2,2,3)
    x = 0:0.1:pi;
    y = tan(x);
    plot(x,y,'DisplayName','曲线3')
    legend('show')
    
    % 绘制第四个子图
    subplot(2,2,4)
    x = 0:0.1:pi;
    y = exp(x);
    plot(x,y,'DisplayName','曲线4')
    legend('show')
    
    % 添加图例到所有子图上方
    h = findobj(gcf,'type','axes');
    allLabels = [];
    for i = 1:length(h)
        allLabels = [allLabels, h(i).Children];
    end
    labels = {allLabels.DisplayName};
    legend(labels,'Location','northoutside','Orientation','horizontal')
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 2月25日

悬赏问题

  • ¥50 关于#华为#的问题:华为HMS账号登录
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?