You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab 2014b中为图例添加标题?

在Matlab R2014b中为图例添加标题的解决方案

Matlab R2014b的legend对象不支持直接通过title()函数添加标题,这也是你当前代码失效的核心原因。以下是两种可行的实现方法:

方法一:通过annotation手动添加图例标题

先创建图例,获取其位置信息,再在图例上方添加独立文本作为标题:

% 保留原有绘图逻辑
clear all; clc; close all;

N = 3:1:20;
dpt1 = [7.75, 5.4, 4.13, 3.35, 2.82, 2.43, 2.14, 1.91, 1.72, 1.57, 1.44, 1.333, 1.24, 1.16, 1.088, 1.025, 0.97, 0.918];
dpt2 = [12.88, 8.97, 6.884, 5.581, 4.695, 4.05, 3.56, 3.18, 2.87, 2.615, 2.405, 2.222, 2.068, 1.932, 1.815, 1.709, 1.615, 1.532];
dpt3 = [18.05, 12.55, 9.63, 7.812, 6.57, 5.67, 4.99, 4.453, 4.02, 3.662, 3.363, 3.113, 2.895, 2.705, 2.54, 2.394, 2.263, 2.145];

figure(1);
grid on;
title('Minimum Separation (dpt)');
xlabel('NO. of Antenna');
ylabel('Minimum Separation (dpt)');

hold on;
plot(N, dpt1, 'r');
plot(N, dpt2, 'g');
plot(N, dpt3, 'b');
hold off;

% 创建图例
lgd = legend(sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 30),...
          sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 50),...
          sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 70));

% 获取图例位置,计算标题摆放坐标
lgd_pos = get(lgd, 'Position');
title_pos = [lgd_pos(1), lgd_pos(2)+lgd_pos(4), lgd_pos(3), 0.03]; % 标题位于图例正上方

% 添加图例标题
annotation('textbox', title_pos, ...
           'String', 'Min Separation (dpt)', ...
           'EdgeColor', 'none', ...
           'HorizontalAlignment', 'center', ...
           'VerticalAlignment', 'bottom');

方法二:利用空图例条目模拟标题

创建一个无显示线条的图例条目,将标题文本放在第一个位置,视觉上充当图例标题:

% 保留原有绘图逻辑
clear all; clc; close all;

N = 3:1:20;
dpt1 = [7.75, 5.4, 4.13, 3.35, 2.82, 2.43, 2.14, 1.91, 1.72, 1.57, 1.44, 1.333, 1.24, 1.16, 1.088, 1.025, 0.97, 0.918];
dpt2 = [12.88, 8.97, 6.884, 5.581, 4.695, 4.05, 3.56, 3.18, 2.87, 2.615, 2.405, 2.222, 2.068, 1.932, 1.815, 1.709, 1.615, 1.532];
dpt3 = [18.05, 12.55, 9.63, 7.812, 6.57, 5.67, 4.99, 4.453, 4.02, 3.662, 3.363, 3.113, 2.895, 2.705, 2.54, 2.394, 2.263, 2.145];

figure(1);
grid on;
title('Minimum Separation (dpt)');
xlabel('NO. of Antenna');
ylabel('Minimum Separation (dpt)');

hold on;
plot(N, dpt1, 'r');
plot(N, dpt2, 'g');
plot(N, dpt3, 'b');
% 添加一个空绘图对象用于生成标题条目
plot(NaN, NaN, 'w', 'LineWidth', 0);
hold off;

% 创建图例,第一个条目作为标题
lgd = legend('Min Separation (dpt)',...
             sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 30),...
             sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 50),...
             sprintf('pt1 = %g cm, \\lambda = %g cm, \\Deltax = %g cm, Z = %g cm ', 2, 0.4, 0.5, 70));

% 隐藏标题条目的线条
set(get(lgd, 'Children'), 'LineStyle', 'none');

方法对比

  • 方法一:标题独立于图例,位置可自由调整,适合需要自定义排版的场景;
  • 方法二:视觉风格更贴合原生图例,无需计算坐标,操作更简洁。

内容的提问来源于stack exchange,提问作者Muhammad Salem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:00:34