我正在使用MATLAB连续生成多个不同数据集的图 . 我希望图例位置不会在绘制的线条上重叠,如果这个位置可以自动完成,那将是理想的 .
我知道将 'Location'
设置为 'best'
来实现这一点但是当使用 'best'
时(下图),图例的位置往往很尴尬 . 另外,我希望传说能够在情节中 . 我还遇到了一种方法,使图例透明(here),这样它就不会使绘制的数据不可见,但显式地将图例放在别处是我正在寻找的 .
有没有办法将图例自动放置在图像的极端( 'NorthWest'
, 'SouthWest'
等),使其不会在绘制的数据上重叠(除了上面建议的方法)?
1 回答
那么,您是否尝试过使用
Location
而不是Position
?例如:而你得到奇怪的结果是正确的?解决这个问题的一种快速方法是仍然使用
Location
,best
,并提取坐标:你应该得到这样的东西:
映射到:
您需要关注左侧和底部 . 这两个值(左和底)指定从图的左下角到图例的左下角的距离,它们类似于您正在使用的网格框架 .
然后,根据框架的大小(我建议你使用
axis([XMIN XMAX YMIN YMAX])
,如果可能的话),你可以 pinpoint the position of the legend within the grid . 接下来你要做的是检查图中的图形是否与图例交叉路径(可能根据某个距离阈值定义相对距离函数),如果是,则随机重新定位图例(即更改值)left
和bottom
)并重复,直到满足您的条件 .如果这仍然困扰你,我可以写一个简短的片段 . 最后,要知道您可以随时选择将图例放在外面: