seaborn中的图例重叠绘图区域[重复]
Posted
技术标签:
【中文标题】seaborn中的图例重叠绘图区域[重复]【英文标题】:legend overlapping plot area in seaborn [duplicate] 【发布时间】:2019-04-07 06:36:43 【问题描述】:我使用 seaborn 制作了上面的情节,但我无法将图例正确放置在情节之外。请注意,图例在图像的右侧被切断。这是它的真实外观,我没有手动切割它。这是我正在使用的代码:
sns.lineplot(x="Time", y='Anomaly', style='country', hue='region', size='area', sizes=(1., 4), data=df)
# Put the legend out of the figure
plt.subplots_adjust(right=0.2)
plt.legend(bbox_to_anchor=(.95, 1), loc=2, borderaxespad=0.)
plt.tight_layout()
plt.show()
-- 编辑:
这里是复制此问题的数据: https://www.dropbox.com/s/w4gd447e22zb5yk/subset.csv?dl=0
【问题讨论】:
有关如何将图例置于绘图之外的详细指南,请参阅this answer。在这里,您将图例放置在轴大小的 95% 处。但是,要使其超出坐标轴,您需要使用 100% 或更多。因此bbox_to_anchor=(1, 1)
甚至(1.02, 1)
可能是个好主意。
感谢@ImportanceOfBeingErnest,当我执行 1.05 时,图例甚至不再可见
这就是我将其标记为重复的原因。特别是,this answer 的“后处理”部分解释了可能的解决方案。
@ImportanceOfBeingErnest,即使在进行后处理之后,例如subplots_adjust,图例部分不可见
所以如果你使用例如subplots_adjust(right=0.8)
并且图例仍然部分隐藏,您将需要尝试 right=0.7
接下来看看会发生什么,直到您满意为止。如果您发现自己需要低于 0.5 的值,您可以考虑在图例中使用较短的标签或增加图形宽度。
【参考方案1】:
您没有为我们指定一个样本集来测试实现并生成绘图,但是通过玩具初始化,修改bbox_to_anchor
似乎可以解决问题。见matplotlib's legend guide。
bbox_to_anchor
控制手动图例放置。将其设置为(1,1)
会将其置于右上角。
plt.legend(bbox_to_anchor=(1, 1), loc=2, borderaxespad=0.)
样图经过修改:
【讨论】:
以上是关于seaborn中的图例重叠绘图区域[重复]的主要内容,如果未能解决你的问题,请参考以下文章