如何增加FactorPlot/FacetGrid图例的字体大小

7
这个问题的说明并不适用于Seaborn FacetPlots。可能有方法可以实现相同的效果吗?

Duplicate - W Stokvis
我只想修改图例字体大小(标题/文本分开)- 就像上面链接的问题一样。 - tangy
3个回答

12

FacetGrid的图例不是坐标轴的一部分,而是FacetGrid对象的一部分。该图例仍然是一个标准的Matplotlib图例,可以像其他图例一样进行操作。

plt.setp(g._legend.get_title(), fontsize=20)

在调用创建facetgrid对象的函数后,g将是您的facetgrid对象。


1
plt.setp(e._legend.get_texts(), fontsize=40) 可以用于增加图例文本的字体大小。 - upuil

2
如果您使用的是较新版本的matplotlib,则有一种更简单的方法来更改图例字体大小 -
plt.legend(fontsize='x-large', title_fontsize='40')

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.legend.html

这可能取决于您使用的matplotlib版本。我正在使用2.2.3,它具有fontsize参数,但没有title_fontsize


0

就像链接的答案中所述,您可以使用setp来设置属性(在这种情况下是图例的字体大小)。

与链接的问题唯一的区别是您需要为FacetGrid的每个轴执行此操作。

g = FacetGrid( ... )

for ax in g.axes.flat:
    plt.setp(ax.get_legend().get_texts(), fontsize=22)  # for legend text
    plt.setp(ax.get_legend().get_title(), fontsize=32)  # for legend title

1
这里会出现如下错误:AttributeError: 'FacetGrid' object has no attribute 'get_legend'。在链接的回答中的评论中也提到了这一点。 - tangy
我所提供的代码不会导致这种错误。 - ImportanceOfBeingErnest
哦,抱歉没有注意到变化。 - tangy
此外,补充一下,如果使用sns.factorplot,需要执行ax[0].get_legend()... - tangy
这可能已经过时,不再可用。@Hielke Walinga的解决方案目前是准确的。 - John Conor
AttributeError: 'NoneType' object has no attribute 'get_texts' - upuil

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