如何在seaborn中增加图例的字体大小

44
我有以下代码用于创建Seaborn散点图。 我很难弄清楚如何增加出现在绘图中的图例的字体大小。

我有以下代码用于创建Seaborn散点图。 我很难弄清楚如何增加出现在绘图中的图例的字体大小。

g=sns.stripplot(x="Market", y="Rate", hue="Group",data=myBenchmarkData, jitter=True, size=12, alpha=0.5)
g.axes.set_title("4* Rate Market and by Hotel Groups for Year 2016",fontsize=25)
g.set_xlabel("Market",fontsize=20)
g.set_ylabel("Rate (in EUR)",fontsize=20)
g.tick_params(labelsize=15)
plt.savefig ('benchmark1.png')

我的x轴和y轴标签字体大小没问题,但是图例的字体大小太小了。如何改变它?

2个回答

71

根据这个例子使用matplotlib函数setp

import seaborn as sns
import matplotlib.pylab as plt
sns.set_style("whitegrid")
tips = sns.load_dataset("tips")

ax = sns.stripplot(x="sex", y="total_bill", hue="day", data=tips, jitter=True)
plt.setp(ax.get_legend().get_texts(), fontsize='22') # for legend text
plt.setp(ax.get_legend().get_title(), fontsize='32') # for legend title

plt.show()

在此输入图片描述

另一种方法是使用 plotting_context 改变所有图表的 font_scale: http://seaborn.pydata.org/generated/seaborn.plotting_context.html


1
如何使用factorplot实现这个?我收到了错误信息:“AttributeError: 'FacetGrid' object has no attribute 'get_legend'”。 - Archie
https://dev59.com/YKvka4cB1Zd3GeqPoyqT - tangy
但是有什么方法可以使图例中的标记大小与图中的标记大小匹配呢? - EEE
3
FacetGrid对象的图例存储在_legend属性中。因此,您可以使用setp(g._legend.get_title(), fontsize=32)更改它的字体大小。 - Hielke Walinga
最终我使用catplot(FaceGrid)成功地运用了sns.move_legend(g.ax, "upper right", fontsize=15) - phi

28

今天有更简单的方法来完成这个任务,只需要设置好你的图形,然后调用

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


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