显示单个标签的海运散点图自定义图例 [英] Seaborn Scatter plot custom legend showing Single Label

查看:29
本文介绍了显示单个标签的海运散点图自定义图例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码使用seborn绘制散点图。我需要更改图例中的标签文本。但是当我为图例添加自定义文本时,它只显示一个标签。我需要有图例文本[‘set’,‘versi’,‘vir’]。代码如下-

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")

scatter = sns.scatterplot(x='sepal_length', y ='sepal_width', hue='species', data=iris, legend=False)
scatter.legend(labels = ['set', 'versi', 'vir'], loc='upper right')
plt.show(scatter)

推荐答案

Seborn的复杂工作方式并不总是遵循标准图例所需的规则(例如,请参见issue 2280)。通常,图例是自定义创建的。目前,matplotlib不提供移动(或更改)此类图例的简单函数。

在seborn 0.11.2中增加了sns.move_legend(ax, ...)(info on github)函数,可以移动图例并更改其他一些属性(但不能更改标签)。

因此,您可以先让sns.scatterplot创建图例,然后移动它。

图例中的标签来自色调列中的元素名称。若要获取不同的名称,最直接的方法是临时重命名。

以下是一些示例代码(请注意,plt.show()没有axas参数,但有一个可选的block=参数):

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

ax = sns.scatterplot(x='sepal_length', y='sepal_width', hue='species',
                     data=iris.replace({'species': {'setosa': 'set', 'versicolor': 'versi', 'virginica': 'vir'}}))
sns.move_legend(ax, loc='upper right')
plt.show()

这篇关于显示单个标签的海运散点图自定义图例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆