Python:绘制位置数据的气泡图
我有一个列表,里面有一对元组,用来表示GPS日志中位置的x和y坐标。这个列表看起来就像这样:[(x1, y1), (x2, y2), (x3, y3)....]
在这个列表中,可能会有多个相同的(x, y)位置出现。现在,我想做的是画一个图,来表示这些位置,并且显示它们的相对频率,也就是哪些地方被访问得最频繁。我猜测可以用气泡图,气泡的大小代表这个地方被访问的次数,或者用热力图,这两种方式都很有用。
那么,使用Python的matplotlib库,最简单的方法是什么呢?
1 个回答
4
可以使用 collections.Counter 来统计 (x,y)
这对数据出现的频率。接着,利用 plt.scatter 中的 s
参数来控制点的大小,c
参数来控制点的颜色。s
和 c
这两个参数都可以接收一个序列作为输入。
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()