我有一个带有一对元组的列表来表示GPS日志的位置的x和y坐标。这就像[(x1,y1),(x2,y2),(x3,y3)....]。
列表中可能有多次重复相同的(x,y)位置。现在,我想要做的是绘制一个代表这些位置的数字,并显示相对频率,即最常访问的地方。我想要一个泡泡图表,其中气泡的大小代表该地点的访问次数,或者热图是最有用的方式。
使用matplotlib库在python中执行此操作的最简单方法是什么?
答案 0 :(得分: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()