如何删除 seaborn facetgrid 的图例部分
How to remove a legend part of a seaborn facetgrid
在 Matplotlib/seaborn 中,我使用 relplot
命令创建了一个 facetgrid
,其中用于 row
参数的数据属性也用于样式属性。这导致了一个由两部分组成的图例。有一部分是多余的,我想删除图例中的这一多余部分。
这里是代码:
df = pd.read_csv('data.csv')
# Dataframe df has columns 'size', 'pricepersize', 'date' and 'series'
g = sns.relplot(x='size',
y='pricepersize',
data=df,
kind='line',
hue='date',
style='series',
row='series',
markers=True
)
plt.show()
这里是生成的图形网格(我要删除的图例部分用绿色标记):
如何去除图例中的“系列”部分,同时将样式参数设置为与行参数相同的数据列?
我想最简单的方法是让 sns 创建图例(这是默认设置),将其删除并根据原始图例的所需条目重新生成一个新图例。
import seaborn as sns
tips = sns.load_dataset("tips")
fg = sns.relplot(data=tips, x="total_bill", y="tip", hue="day", row="time", kind='line', style='time')
给予
然后使用
fg.legend.remove()
fg.fig.legend(handles=fg.legend.legendHandles[:5], loc=7)
终于得到
在 Matplotlib/seaborn 中,我使用 relplot
命令创建了一个 facetgrid
,其中用于 row
参数的数据属性也用于样式属性。这导致了一个由两部分组成的图例。有一部分是多余的,我想删除图例中的这一多余部分。
这里是代码:
df = pd.read_csv('data.csv')
# Dataframe df has columns 'size', 'pricepersize', 'date' and 'series'
g = sns.relplot(x='size',
y='pricepersize',
data=df,
kind='line',
hue='date',
style='series',
row='series',
markers=True
)
plt.show()
这里是生成的图形网格(我要删除的图例部分用绿色标记):
如何去除图例中的“系列”部分,同时将样式参数设置为与行参数相同的数据列?
我想最简单的方法是让 sns 创建图例(这是默认设置),将其删除并根据原始图例的所需条目重新生成一个新图例。
import seaborn as sns
tips = sns.load_dataset("tips")
fg = sns.relplot(data=tips, x="total_bill", y="tip", hue="day", row="time", kind='line', style='time')
给予
然后使用
fg.legend.remove()
fg.fig.legend(handles=fg.legend.legendHandles[:5], loc=7)
终于得到