首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用非索引变量对Seaborn热图进行排序

使用非索引变量对Seaborn热图进行排序
EN

Stack Overflow用户
提问于 2020-06-07 11:23:40
回答 1查看 671关注 0票数 1

我目前正处于从Rggplot2迁移到seaborn的过程中,因为R正在为我使用的数据量而苦苦挣扎。我目前正在开发一个相当简单的热图,我已经能够在没有太多问题的情况下渲染一般的热图,但我不确定如何调整热图的分类顺序。

在本例中,我的数据具有以下标头:

Sample Position Depth Order

样本是“y轴”范畴,位置是“x轴”范畴。深度是单元格的值。Order是在其他地方计算的元值,但我想使用Order作为y轴的排序值,同时保留Sample作为标签。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-07 19:40:00

您需要为sns.heatmap提供一个矩形格式或矩阵,因此尽管您有一个用于对Sample进行排序的Order列,但是不清楚每个'Order'类别是否有一个惟一的值。

下面我使用一个简单的例子,基本上你根据“Order”的平均值将“Sample”更改为一个类别。这就像更改R中的因子级别一样。此外,您还需要确保没有NaN,否则热图可能会报告:

代码语言:javascript
运行
复制
df = pd.DataFrame({'Sample':np.repeat(['A','B','C'],4),
                   'Position':[1,2,3,4]*3,
                   'Depth':np.random.normal(0,1,12),
                   'Order':np.repeat([2,1,3],4)})

y_order = df.groupby('Sample')['Order'].agg('mean').sort_values().index
df['Sample'] = pd.Categorical(df['Sample'],ordered=True,categories=y_order)
sns.heatmap(df.pivot(index='Sample',columns='Position', values='Depth'))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62240455

复制
相关文章

相似问题

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