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