5

我正在使用 MATLAB 连续生成多个不同数据集的图。我希望图例位置不会在绘制线上重叠,如果可以自动完成此放置,那将是理想的。

我知道设置'Location'to'best'来实现这一点,但是使用时图例的位置往往很尴尬'best'(如下)。另外,我希望传说在情节中。我还遇到了一种使图例透明的方法(此处),这样它就不会使绘制的数据不可见,但是我正在寻找将图例明确放置在其他地方。尴尬的传说

有没有办法自动将图例放置在图像的极端('NorthWest''SouthWest'),这样它就不会在绘制的数据上重叠(除了上面建议的方法)?

4

1 回答 1

0

那么,您尝试过使用Location而不是Position?例如:

x =1:100;
y = x.^2;
lgd = legend('y = x.^2');
set(lgd,'Location','best')

你得到奇怪的结果正确吗?解决此问题的一种快速方法是仍然使用Location, withbest并提取坐标:

lgd.Position

你应该得到这样的东西:

ans =

     0.7734    0.3037    0.1082    0.0200

映射到:

[left bottom width height]

您将需要专注于左侧和底部。left 和 bottom 这两个值指定了从图形左下角到图例左下角的距离,它们类似于您使用的网格框架。

然后,根据框架的大小(axis([XMIN XMAX YMIN YMAX])如果可能,我建议您使用它),您可以查明图例在 grid 中的位置。接下来您可以做的是检查绘图中的图形是否以及哪些图形与图例交叉(可能基于某个距离阈值定义相对距离函数),如果是,则随机重新定位图例(即更改值和) 并重复leftbottom直到满足您的条件。

如果这仍然困扰您,我可以写一个简短的片段。最后,要知道您始终可以选择将图例放在外面:

set(lgd,'Location','BestOutside')
于 2016-11-21T19:26:36.773 回答