在基于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()
我想通过添加“ 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”添加标题。非常感谢!
答案 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()