首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sns.pairplot中的图例未完全显示

sns.pairplot中的图例未完全显示
EN

Stack Overflow用户
提问于 2020-09-11 07:57:17
回答 2查看 193关注 0票数 0

我有一个sns.pairplot,轴外有图例。无论我如何调整bbox_to_anchor,除非我将图例的右侧放入轴中,否则图例的左侧会被切掉一点。

图例最初是这样定位的:

我可以通过以下方式成功调整图例的位置:

代码语言:javascript
复制
g._legend.set_bbox_to_anchor((1, .53, .0, 0))

无论我如何移动图例,总是图例的一小部分被截断。这真的很奇怪。这是不是因为某个调用:

代码语言:javascript
复制
plt.subplots_adjust(hspace=0.02, wspace=0.04)    

下面是我调用来调整图例的所有命令:

代码语言:javascript
复制
g._legend.set_title('')
g._legend.set_bbox_to_anchor((1.01, .53, 0, 0))

#new_labels = ['Cluster 1', 'Cluster 2', 'Cluster 3'...]
new_labels = ['Cluster ' + str(i) for i in range(1, len(cluster_data[cluster_col_index].unique()+1))]
for t, l in zip(g._legend.texts, new_labels): t.set_text(l)


for lh in g._legend.legendHandles: 
    lh.set_alpha(1)
    lh._sizes = [70] 

代码语言:javascript
复制
g._legend.borderpad=5

也不工作..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-11 14:48:23

您可以设置自己的图例。您可以使用plt.legend()设置图例。如果要删除原始图例,请启用ax._lengen.remove()

代码语言:javascript
复制
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="ticks")

df = sns.load_dataset("penguins")
ax = sns.pairplot(df, hue="species")
# ax._legend.remove()

plt.legend(['Adelie', 'Chinstrap', 'Gentoo'], bbox_to_anchor=(0.9, 0.6))

plt.show()

票数 2
EN

Stack Overflow用户

发布于 2020-09-15 12:45:17

我只是想出了另一个解决方案。只需要添加更多的空间后,图例标签将工作。

想要更改代码:

代码语言:javascript
复制
new_labels = ['Cluster ' + str(i) for i in range(1, len(cluster_data[cluster_col_index].unique()+1))]
for t, l in zip(g._legend.texts, new_labels): t.set_text(l)

至:

代码语言:javascript
复制
new_labels = ['Cluster ' + str(i) + ' ' for i in range(1, len(cluster_data[cluster_col_index].unique()+1))]
for t, l in zip(g._legend.texts, new_labels): t.set_text(l)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63839082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档