gpt4 book ai didi

matlab - 如何自动显示图例,使其接触 Matlab (R 2019b) 图中角的边界?

转载 作者:行者123 更新时间:2023-12-02 04:59:23 25 4
gpt4 key购买 nike

我知道如何使用图例功能的“位置”输入,但没有一个选项将图例放在角落里,它们都在图例和图的边框之间留下了一个小空间。我已经看到可以用向量指定位置,但我不明白该怎么做。任何帮助表示赞赏。

最佳答案

静态方法

这是一种方法。我使用 NorthEast 图例位置作为示例。对于其他职位,您可以使用类似的逻辑(见下文)。

plot([2 -2]) % example plot...
le = legend('abc', 'Location', 'northeast'); % ... with legend

pos_le = get(le, 'position');
pos_ax = get(gca, 'position');
set(le, 'position', [pos_le(1) pos_le(2) pos_ax(1)+pos_ax(3)-pos_le(1) pos_ax(2)+pos_ax(4)-pos_le(2)]); % new position

要了解其工作原理,请注意位置属性定义为

[lower_pos, left_pos, width, height]

因此,在这种情况下,图例宽度设置为轴左侧位置加上轴宽度减去图例左侧位置;对于图例高度也类似。此逻辑适用于 NorthEast 位置的图例。对于其他位置,修改应该是明显的。

动态方法

上述的一个缺点是,如果调整图形大小,图例将停止对齐。要在图窗大小更改时保持对齐,您可以使用图窗的 SizeChangedFcn 属性来指定在调整图窗大小时自动执行的代码 (ResizeFcn) > 也有效,但它是 not recommended )。

plot([2 -2]) % example plot...
le = legend('abc', 'Location', 'northeast'); % ... with legend

set(gcf, 'SizeChangedFcn', 'le = findobj(gcf, ''type'', ''legend''); pos_le = get(le, ''position''); pos_ax = get(gca, ''position''); set(le, ''position'', [pos_le(1) pos_le(2) pos_ax(1)+pos_ax(3)-pos_le(1) pos_ax(2)+pos_ax(4)-pos_le(2)]);')

set(gcf, 'position', get(gcf, 'position')-1e-3) % force initial call to SizeChangedFcn
set(gcf, 'position', get(gcf, 'position')+1e-3) % restore initial position

示例:

enter image description here

关于matlab - 如何自动显示图例,使其接触 Matlab (R 2019b) 图中角的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60467846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com