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

Matlab双列图例间距调整:如何调整图例项位置对齐对应分组标题

你可以通过获取图例内部的图形子对象,手动调整两列图例项的水平偏移量,实现和对应分组标题的对齐,修改后的完整代码如下:

% random variables 
a=rand(1,10);
b=rand(1,10);
c=ones(1,10)*0.7;
d=ones(1,10)*0.2;

figure;
p1=plot(a,'o-r');
hold on
p2=plot(b,'s-b');
p3=plot(c,'-.k');
p4=plot(d,'-.k');
lg=legend([p1 p2 p3 p4],'a val','b val','c limit','d limit');
lg.NumColumns=2;
title(lg,'raw data values from experiments          limitation values');
ylim([0 1.2])

% 新增以下代码调整图例项对齐
drawnow % 确保图例完全渲染
% 获取图例中的所有文本和线条子对象
lg_children = lg.Children;
% 筛选出图例项的文本对象(4个对应4个图例)
txt_objs = findobj(lg_children,'Type','text');
% 筛选出图例项的图标(线条/标记)对象
icon_objs = findobj(lg_children,'Type','line');

% 左列(a val、b val)向左偏移量,可根据实际显示效果微调
left_offset = -0.12;
% 右列(c limit、d limit)向右偏移量,可根据实际显示效果微调
right_offset = 0.12;

% 调整左列(索引2、4对应a val、b val,按Matlab图例对象排序规则)
txt_objs(2).Position(1) = txt_objs(2).Position(1) + left_offset;
txt_objs(4).Position(1) = txt_objs(4).Position(1) + left_offset;
icon_objs(2).XData = icon_objs(2).XData + left_offset;
icon_objs(4).XData = icon_objs(4).XData + left_offset;

% 调整右列(索引1、3对应c limit、d limit)
txt_objs(1).Position(1) = txt_objs(1).Position(1) + right_offset;
txt_objs(3).Position(1) = txt_objs(3).Position(1) + right_offset;
icon_objs(1).XData = icon_objs(1).XData + right_offset;
icon_objs(3).XData = icon_objs(3).XData + right_offset;

如果偏移后整体图例宽度不够,可以额外调整lg.Position(3)属性增大图例宽度,避免内容被截断。left_offset和right_offset的数值可以根据你实际的图例标题长度、字体大小自行微调,达到最佳对齐效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03