首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更换海上小提琴图例标签?

如何更换海上小提琴图例标签?
EN

Stack Overflow用户
提问于 2021-03-28 21:15:10
回答 1查看 1.2K关注 0票数 3

我用海运制作了一个小提琴图,用颜色来识别谁幸存了,谁没有。这是由列“死亡事件”(DEATH_EVENT)给出的,其中0表示那个人幸存了,1表示他们没有。我唯一的问题是,我不知道如何为这个色彩传奇设置标签。如下图所示,“DEATH_EVENT”呈现0和1,但我想将其转换为“存活”和“不生存”。

当前代码:

代码语言:javascript
复制
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
sns.set()
plt.style.use('seaborn')
data = pd.read_csv('heart_failure_clinical_records_dataset.csv')

g = sns.violinplot(data=data, x='smoking', y='age', hue='DEATH_EVENT')
g.set_xticklabels(['No smoking', 'Smoking'])

我试着使用:g.legend(labels=['Survived', 'Not survived']),但它返回它时没有颜色,而是由于某种原因而变成了一条又细又粗的线条。

我知道我可以用:

代码语言:javascript
复制
data['DEATH_EVENT'].replace({0:'Survived', 1:'Not survived'}, inplace=True)

但我想看看有没有别的办法。我仍然是个新手,所以我猜想CSV的作者之所以这么做是有原因的,因为它用整数来描述很多事情。例句:如果有人抽烟或不抽烟,做爱,糖尿病,等等,也许它跑得更快?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-28 22:00:49

控制Seaborn传说仍然有些棘手(对matplotlib的API进行一些扩展会有帮助)。在这种情况下,您可以从刚刚创建的图例中获取句柄,并将它们用于新的图例:

代码语言:javascript
复制
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame({"smoking": np.random.randint(0, 2, 200),
                     "survived": np.random.randint(0, 2, 200),
                     "age": np.random.normal(60, 10, 200),
                     "DEATH_EVENT": np.random.randint(0, 2, 200)})
ax = sns.violinplot(data=data, x='smoking', y='age', hue='DEATH_EVENT')
ax.set_xticklabels(['No smoking', 'Smoking'])
ax.legend(handles=ax.legend_.legendHandles, labels=['Survived', 'Not survived'])

下面是一种通过dataframe进行更改而不更改原始数据的方法。为了避免一起访问ax.legend_ (为了删除图例标题),一个诀窍是将列重命名为空字符串(并将该空字符串用于hue)。如果dataframe不是超长(即没有数百万行),则速度和内存开销相当小。

代码语言:javascript
复制
names = {0: 'Survived', 1: 'Not survived'}
ax = sns.violinplot(data=data.replace({'DEATH_EVENT': names}).rename(columns={'DEATH_EVENT': ''}),
                    x='smoking', y='age', hue='')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66846287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档