绘制pandas数据帧中轨迹数据的热图

时间:2017-02-28 11:47:47

标签: python pandas dataframe heatmap seaborn

我在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位置处的对象数量越多,我希望颜色越强烈。关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:2)

一个想法是使用seaborn热图。首先,我会将您的数据框转移到所需的输出上,在这种情况下xy并说出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你可以找到一些关于如何定义色彩图,样式等的样本。

enter image description here