从Seaborn线图中移动和删除图例

时间:2020-05-24 02:29:09

标签: matplotlib seaborn

我正在尝试从Seaborn的线图中完全删除该图例。 2x2子图中有3个线图,每个线图都这样称呼:

g = sns.lineplot(data=df, dashes=False, ax=axs[0,1])

更具体地说,我想摆脱三个折线图中的每个图例,然后使用2x2图中的第四个区域显示图例。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:3)

您可以删除前三个轴的每个图例,然后使用plt.figlegend(),它是整个图形的图例。您可能必须根据图例中的内容调整bbox_to_anchor()参数。 (请忽略我的地块细节,这些细节仅用于说明目的。)

import seaborn as sns

df = sns.load_dataset('flights')

fig, ax = plt.subplots(2,2)

ax1 = sns.lineplot(x=df['year'],y=df['passengers'],
                   color='b',dashes=False,label='ax 1 line',ax=ax[0,0]) 
ax2 = sns.lineplot(x=df['year'],y=df['passengers'],
                   color='r',dashes=False,label='ax 2 line',ax=ax[0,1]) 
ax3 = sns.lineplot(x=df['year'],y=df['passengers'],
                   color='g',dashes=False,label='ax 3 line',ax=ax[1,0])
ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()
plt.figlegend(loc='lower right',bbox_to_anchor=(0.85,0.25))

plt.show()

结果:

enter image description here