【问题标题】:Heat Map Python热图 Python
【发布时间】:2014-12-16 05:55:15
【问题描述】:

我正在尝试绘制热图。我使用的数据具有以秒为单位的地理坐标和时间。数据的本质是边缘在特定地理位置相遇并花费一些时间连接。考虑到地理位置和这些边缘相互连接的时间,我需要绘制一张热图。

边缘相互连接,并且它们碰巧连接了一定的时间(以秒为单位),并且当时它们位于特定的地理位置。我需要绘制一张热图来确定人群密度和在该位置花费的时间。

col[0]col[1] 是边 col[2] 时间连接 col[3]col[7] 是地理坐标。

0006251fda59 00904bc9dd3c 11.0 821141 439384 821141 439384
0004233019fe 0004233cd875 23.0 818612 439965 818612 439965
0004233019fe 000423aa3632 1572.0 818612 439965 818612 439965
0004233019fe 000423dfbc68 200.0 818612 439965 818612 439965
0004233019fe 000423fbb938 648.0 818612 439965 818612 439965
0004233019fe 000423fcb610 1999.0 818612 439965 818612 439965
00022d1aa531 00028a2d154f 10.0 821007 438860 821007 438860
00022d428ff1 00028a2d154f 10.0 821007 438860 821007 438860

感谢任何有关如何开始的建议。

【问题讨论】:

  • 不清楚你想要什么。你用谷歌地图标记了你的问题,为什么?您的数据至少是 5 维的,有两组地理坐标和一个时间 - 您打算如何将其投影到一组平面坐标和颜色,即热图所需的 3 维? col[0:2] 中边标识符的作用是什么?
  • 更新了问题。

标签: python matplotlib


【解决方案1】:

您首先需要离散化您的坐标。正如我为您的示例数据所猜测的那样,col[0]col[1] 代表节点(它们两个之间的边缘),因此您可以使用节点名称来离散坐标。为此,请为每个节点分配一个编号。

提取所有节点:

set1 = set([col[0] for col in data])
set2 = set([col[1] for col in data])
nodes = list(set1.union(set2))

data 是您的数据矩阵。离散化它们:

mapping = {}
for i, node in enumerate(nodes):
    mapping[node] = i

创建您的热图容器:

import numpy as np
n = len(nodes)
heatmap = np.zeros((n,n))

填充热图:

for col in data:
    coord1 = mapping[col[0]]
    coord2 = mapping[col[1]]
    heatmap[[coord1, coord2], [coord2, coord1]] += col[2]

现在您可以按照@greschd 的建议绘制imshowhist2d

imshow(heatmap, 'jet', interpolation=None)

或者按照@en_Knight 的链接说明构建更复杂的热图。

注意:我确实假设您的热图是 npoints x npoints 并且每个点都由其 (x,y) 坐标或其节点标识符表示,因此,仅当我从您的示例中猜到相同节点时才有效标识符(哈希)始终具有相同的坐标。

【讨论】:

    【解决方案2】:

    如果我没听错的话,您想要一个类似于this post 中的热图。因此,因为您的数据只是点,所以您要做的第一件事就是将您的区域细分为正方形(网格)。然后简单地将位于给定正方形中的所有点的时间相加,从而为您提供 2D 列表。

    由此,您可以使用imshowhist2dmatplotlib 生成热图。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2013-09-24
      • 1970-01-01
      • 2020-09-24
      • 2016-07-20
      • 2017-03-17
      • 2016-07-30
      • 2015-07-16
      • 2017-06-17
      相关资源
      最近更新 更多