Seaborn中relplot图中的图例大小/标记

4

我一直在 Stack Overflow 上寻找如何增加 relplot 中图例/色标大小的方法。

plt.rcParams["axes.labelsize"] = 20
g = sns.relplot(x='Time(days)', y='Duration Total (s)', hue='Outcome', data=t1,height=15, aspect=1, s=50);
plt.suptitle("a_10",fontsize=25, fontweight='bold')

我似乎无法理解它。有太多混杂的参考资料,这让人感到有些困惑。


你想增加文字大小还是标记大小(或者两者都要)? - araraonline
2个回答

6

我花了一些时间研究这个问题,确实很令人困惑。

我也会假设你是在谈论文本大小,而不是标记大小。

有效的方法

我建议您使用两种主要方法来增加图例的大小(从此处检索):

  • 使用sns.set()全局缩放字体。例如:
sns.set(font_scale=1.5)
# plotting code here...
  • 使用sns.plotting_context()本地扩大字体。例如:
with sns.plotting_context("notebook", font_scale=1.5):
    # plotting code here...

两种方法的问题在于它们也会增加其他元素的大小。因此,例如,轴标签将随图例一起增长:

无法实现的方法

在提到的SO链接中,还有一个回答直接解决修改图例的问题。它使用了FacetGrid的私有属性_legend并直接增加文本大小:

g = sns.relplot(x='sepal_length', y='sepal_width', hue='species', data=iris)
plt.setp(g._legend.get_texts(), fontsize=16)

然而,这种方法会严重破坏格式。从快速浏览中可以看出,我认为这是因为FacetGrid使用图例尺寸来计算其大小。因此,在之后修改图例会使事情变得混乱。

该怎么做?

从我的研究来看,似乎没有简单的方法可以实现您想要的功能。您可以向seaborn仓库提交问题,也许他们会修复它(您可以提供您的问题参考)。更有希望的是,可能有一种方法可以实现它,他们将简单地指出如何实现。

祝好运 :)


4

我不知道为什么这个没有更多的赞。它完美地运作。 - mic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接