繁体   English   中英

如何删除 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()

这里是生成的图形网格(我要删除的图例部分标记为绿色):

带有冗余图例部分的 facetgrid

如何摆脱图例中的“系列”部分,但将样式参数设置为与行参数相同的数据列?

我想最简单的方法是让 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)

终于得到

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM