MATLAB中使用pbaspect后如何让图例保留在轴区域内?
解决MATLAB中
pbaspect调整比例后legend的"best"位置失效问题 当使用pbaspect调整坐标轴宽高比后,legend的"best"定位算法会因轴的显示尺寸变化失效,导致图例被放置到轴区域外。以下是两种无需手动调整的批量解决方案:
方案一:先收紧轴范围再设置宽高比
通过axis tight让坐标轴范围适配数据,再设置宽高比,确保legend计算位置时基于调整后的轴边界:
close all; clear; clc; x = 0 : 0.01 : 2*pi; y1 = sin(x); y2 = cos(x); figure; plot(x, y1); hold on; plot(x, y2); axis tight; % 收紧轴范围适配数据 pbaspect([3 1 1]); % 设置x/y轴比例为3:1 hold off; legend("sin", "cos", "Location", "best");
方案二:提前创建轴并设置宽高比
先创建坐标轴对象并配置pbaspect,再在该轴上绘图,让legend从一开始就基于正确的轴尺寸计算位置:
close all; clear; clc; x = 0 : 0.01 : 2*pi; y1 = sin(x); y2 = cos(x); figure; ax = axes; % 创建坐标轴对象 pbaspect(ax, [3 1 1]); % 提前设置宽高比 hold(ax, 'on'); plot(ax, x, y1); plot(ax, x, y2); hold(ax, 'off'); legend(ax, "sin", "cos", "Location", "best");
两种方法均适配批量生成数千张图的场景,无需手动干预图例位置。
内容的提问来源于stack exchange,提问作者Gaelthorn
相关产品推荐
相关产品推荐

