【问题标题】:Plotting a heatmap for trajectory data from a pandas dataframe为 pandas 数据框中的轨迹数据绘制热图
【发布时间】:2017-07-19 09:03:24
【问题描述】:

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

【问题讨论】:

    标签: python pandas dataframe heatmap seaborn


    【解决方案1】:

    一个想法是使用 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你可以找到一些关于如何定义颜色图、样式等的示例。

    【讨论】:

    • 谢谢 - 这是一个很好的开始!但是我对可视化的质量不感兴趣。有没有办法让热图来展示同一位置的粒子数量?也许通过计数?
    • 我还有一个问题,我不能在旋转时使用 x 轴信息作为索引,因为错误指出“索引包含重复的条目,无法重塑”
    • 在对象的情况下,如果它代表您需要的粒子数量,您可以将质量替换为枢轴实例中的对象。
    • 在重复条目的情况下,您可以使用 groupby 来获得值之间的一一对应关系,并对我认为的对象数量求和。但它与问题的熊猫方面更相关。您应该针对您的问题发布一些可重现的输入,以便我们尝试帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多