如何增大FactorPlot/FacetGrid图例字体大小?求适配Seaborn FacetPlot的有效方案
解决Seaborn FactorPlot/FacetGrid图例字体过小的问题
其实FactorPlot本质是FacetGrid的上层封装,所以调整图例字体的方法对两者通用。之前你碰到的无效情况,大概率是用了普通matplotlib的图例调整方式,没触碰到FacetGrid内部管理的图例对象。下面给你两种靠谱的实现方法:
方法一:创建时直接指定图例参数
在调用factorplot或者给FacetGrid添加图例时,用legend_kws参数直接传入字体大小设置,这是最直接的方式:
示例1:FactorPlot的用法
import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据 tips = sns.load_dataset("tips") # 创建FactorPlot时通过legend_kws设置图例字体 g = sns.factorplot( x="day", y="total_bill", hue="sex", data=tips, legend_kws={'fontsize': 14} # 这里设置字体大小,按需调整数值 ) plt.show()
示例2:FacetGrid的用法
如果是手动创建FacetGrid并添加图例,在add_legend方法里传入legend_kws:
g = sns.FacetGrid(tips, col="time", hue="sex") g.map(sns.barplot, "day", "total_bill") # 添加图例时设置字体大小 g.add_legend(legend_kws={'fontsize': 16}) plt.show()
方法二:创建后动态修改图例字体
如果已经创建了FacetGrid/FactorPlot对象,想事后调整字体,可以直接获取它的图例对象进行修改:
# 假设g是已经创建好的FacetGrid/FactorPlot对象 leg = g._legend # 获取组件内部的图例对象 # 方式1:直接设置整个图例的字体大小 leg.set_fontsize(15) # 方式2:逐个修改图例文本的字体(更灵活,比如单独调整某一项) for text in leg.get_texts(): text.set_fontsize(17) plt.show()
为什么普通的plt.legend(fontsize=...)没用?因为FacetGrid的图例是绑定在自身对象上的,不是全局的matplotlib图例,所以得通过它的内部属性或者专属方法来调整。
内容的提问来源于stack exchange,提问作者tangy
相关产品推荐
相关产品推荐

