我在pandas中有一个数据框,其中包含我想要显示为各种热图的信息。数据框显示不同时间点的几个对象的x和y坐标,并在额外列中包含其他信息(例如:质量)。
time object x y mass
3 1.0 216 12 12
4 1.0 218 13 12
5 1.0 217 12 12
6 1.0 234 13 13
1 2.0 361 289 23
2 2.0 362 287 22
3 2.0 362 286 22
5 3.0 124 56 18
6 3.0 126 52 17
我想创建一个热图,其中x和y值对应于热图的x和y轴。特定x / y位置处的对象数量越多,我希望颜色越强烈。关于如何实现这一目标的任何想法?
答案 0 :(得分:2)
一个想法是使用seaborn热图。首先,我会将您的数据框转移到所需的输出上,在这种情况下x
,y
并说出mass
,其中包含:
In [4]: df
Out[4]:
time object x y mass
0 3 1.0 216 12 12
1 4 1.0 218 13 12
2 5 1.0 217 12 12
3 6 1.0 234 13 13
4 1 2.0 361 289 23
5 2 2.0 362 287 22
6 3 2.0 362 286 22
7 5 3.0 124 56 18
8 6 3.0 126 52 17
In [5]: d = df.pivot('x','y','mass')
In [6]: d
Out[6]:
y 12 13 52 56 286 287 289
x
124 NaN NaN NaN 18.0 NaN NaN NaN
126 NaN NaN 17.0 NaN NaN NaN NaN
216 12.0 NaN NaN NaN NaN NaN NaN
217 12.0 NaN NaN NaN NaN NaN NaN
218 NaN 12.0 NaN NaN NaN NaN NaN
234 NaN 13.0 NaN NaN NaN NaN NaN
361 NaN NaN NaN NaN NaN NaN 23.0
362 NaN NaN NaN NaN 22.0 22.0 NaN
然后您可以应用简单的热图:
ax = sns.heatmap(d)
因此您有以下图像。如果您需要更复杂的属性而不是单个mass
,则可以在原始数据框中添加新列。最后here你可以找到一些关于如何定义色彩图,样式等的样本。