【发布时间】:2015-06-17 23:52:48
【问题描述】:
我正在尝试创建一个带有热图的图像,分别表示每个标签的数据点特征的相关性。使用 seaborn,我可以像这样为单个类创建热图
grouped = df.groupby('target')
sns.heatmap(grouped.get_group('Class_1').corr())
我明白这是有道理的:
然后我尝试像这样列出所有标签:
g = sns.FacetGrid(df, col='target')
g.map(lambda grp: sns.heatmap(grp.corr()))
很遗憾,我明白了这对我来说毫无意义:
【问题讨论】:
-
您想要九个热图,每个都显示一个目标内的相关性?
-
是的,我接受了@cphlewis 的回答,因为它有效,但到目前为止,我喜欢 seaborn 的一点是你可以快速而肮脏地绘制东西,因为你几乎可以告诉它“绘制这个“它会想出一些东西。我的用例几乎就是这样:对我来说,如何排列热图或显示什么轴并不是很重要,只是以我要求的格式查看该信息。所以让 lambda 工作会非常有帮助:)
-
是的,我赶时间并没有正确点击按钮thanx :)
-
有趣的是我注意到了!无论如何,我花了一段时间设置一个 lambda。您可以看到每个方面的数据,但不能在适当的位置更改它,并且热图期望其参数的方式不像情节等那样,期望他们的数据轻松映射,简而言之,自己滚动看起来像这样去。也许如果你把标题更具体一点,seaborn 专家会注意到——“将相关热图绘制到 FacetGrid 中”,也许?
-
您的
map_dataframe解决方案是正确的——您可能想在下面添加它,因为我一开始没有看到它,正准备把它写下来作为答案。但是 cphlewis 的例子也很好,因为通常在 matplotlib 中创建一个 Axes 网格并使用 for 循环比尝试将数据转换为FacetGrid期望的格式更容易。
标签: python pandas plot seaborn