那么,您尝试过使用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 中的位置。接下来您可以做的是检查绘图中的图形是否以及哪些图形与图例交叉(可能基于某个距离阈值定义相对距离函数),如果是,则随机重新定位图例(即更改值和) 并重复left
,bottom
直到满足您的条件。
如果这仍然困扰您,我可以写一个简短的片段。最后,要知道您始终可以选择将图例放在外面:
set(lgd,'Location','BestOutside')