如何更改Seaborn FacetGrid的图例标题?

时间:2019-08-23 22:24:11

标签: python matplotlib plot seaborn

在基于Seaborn的FacetGrid的线图中,想要更改标签标题。看起来很简单,但事实证明这是一项艰巨的任务

tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col= 'day', legend_out= True,)
g.map(sns.lineplot, 'total_bill', 'tip', 'sex', 'time',
     ci = False)    
g.fig.legend()

legend title 'sex'

我想通过添加“ title”参数将标签标题从“性别”更改为“性别”。但事实证明,这已成为现有标题的头条新闻

g.add_legend(title = 'Gender')

legend title 'sex' with headline 'Gender'

我也尝试访问fig.legend来更改文本,但是现在它显示了多个图例,可能是由于多面图的缘故。

l = g.fig.legend()
l.texts[0].set_text('Gender')

legend title 'Gender', however, with multiple legends

我敢肯定,通过更改数据中的变量名来更改名称可能是一种“ hacky”方式,但是我想知道是否有一种方法可以简单地替换Seabron FacetGrid的图例标题,或者是否可以无法显示,请在显示单个相关图例的同时通过“ fig.legend”添加标题。非常感谢!

1 个答案:

答案 0 :(得分:1)

为什么不将"sex"列的名称替换为"Gender"

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips")
tips.columns = [n if n != "sex" else "Gender" for n in tips.columns]

g = sns.FacetGrid(tips, col= 'day')
g.map(sns.lineplot, 'total_bill', 'tip', 'Gender', 'time',
     ci = False)    
g.add_legend()

plt.show()

enter image description here