首页 > 解决方案 > 超越 Seaborn 的传奇

问题描述

我使用 seaborn 的 relplot 制作了一个线图,我想自定义我的图例标签。出于某种原因,当我这样做时,它会创建另一个传奇而不删除旧传奇。如何摆脱最初的传说(标题为“性”的传说)?另外,如何为我的新图例添加图例标题?

这是我用来生成情节的代码:


plt.figure(figsize=(12,10))

sns.relplot(x='Year',y = 'cancer/100k pop' , data = dataset_sex,hue="Sex", kind="line",ci=None)
title_string = "Trend of Cancer incidencies by Sex " 
plt.xlabel('Years')
plt.title(title_string)
plt.legend(['Men','Women'])

在此处输入图像描述

标签: python-3.xseaborn

解决方案


regplot是一个图形级函数,并返回一个FacetGrid. 您可以通过 删除其图例g.legend.remove()

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips")
g = sns.relplot(data=tips, x="total_bill", y="tip", hue="day")
g.legend.remove()
plt.legend(['Jeudi', 'Vendredi', 'Samedi', 'Dimanche'])
plt.show()

结果图

此代码已使用 seaborn 0.11 进行了测试。可能你需要升级。为图例添加标题:plt.legend([...], title='New title').

请注意,这plt.legend(...)将在最后一个(或唯一一个)子图中创建图例。如果您更喜欢绘图旁边的图形级图例,要更改图例标签,您可以g.add_legend(labels=[...], title='new title')在删除旧图例后调用。

PS:添加legend=Falsesns.relplot()不会创建图例条目。因此,您需要重新创建图例标记及其标签,同时丢失使用了哪些颜色的信息。


推荐阅读