Python:绘制位置数据的气泡图

2 投票
1 回答
7005 浏览
提问于 2025-04-17 19:38

我有一个列表,里面有一对元组,用来表示GPS日志中位置的x和y坐标。这个列表看起来就像这样:[(x1, y1), (x2, y2), (x3, y3)....]

在这个列表中,可能会有多个相同的(x, y)位置出现。现在,我想做的是画一个图,来表示这些位置,并且显示它们的相对频率,也就是哪些地方被访问得最频繁。我猜测可以用气泡图,气泡的大小代表这个地方被访问的次数,或者用热力图,这两种方式都很有用。

那么,使用Python的matplotlib库,最简单的方法是什么呢?

1 个回答

4

可以使用 collections.Counter 来统计 (x,y) 这对数据出现的频率。接着,利用 plt.scatter 中的 s 参数来控制点的大小,c 参数来控制点的颜色。sc 这两个参数都可以接收一个序列作为输入。

import matplotlib.pyplot as plt
import collections
import numpy as np

data = [tuple(pair)
        for pair in np.random.uniform(5, size=(20,2))
        for c in range(np.random.random_integers(50))]
count = collections.Counter(data)

points = count.keys()
x, y = zip(*points)
sizes = np.array(count.values())**2
plt.scatter(x, y, s=sizes, marker='o', c=sizes)
plt.show()

enter image description here

撰写回答