我有一个包含无序数据点的字典列表:
print(data)
[{'ID': 1, 'Longitude': 18.6081, 'Latitude': 50.0977, 'Cost': -1.0},
{'ID': 2, 'Longitude': 18.6091, 'Latitude': 50.197700000000005, 'Cost': 4},
{'ID': 3, 'Longitude': 18.6081, 'Latitude': 50.297700000000006,'Cost':4},....]
我想使用matplotlib将'cost'函数的值绘制为countorf。
到目前为止,我已经测试了以下代码:
lat = []
lon = []
cost = []
for dataPoint in data:
if dataPoint["Cost"] == -1:
continue
lon.append(dataPoint["Longitude"])
lat.append(dataPoint["Latitude"])
cost.append(dataPoint["Cost"])
xi = np.linspace(min(lon), max(lon))
yi = np.linspace(min(lat), max(lat))
zi = griddata(lon, lat, cost, xi, yi, interp='linear')
#make a plot
plt.contourf(xi, yi, zi, 100)
plt.colorbar()
plt.show()
上面的代码可以工作,但是它会在数据点之间插入值,而我要做的就是在平面上绘制数据数组中的所有点,并用颜色表示其“成本”值。我该怎么办?
答案 0 :(得分:0)
这是你的意思吗?
In [41]: import matplotlib.pyplot as plt ; from matplotlib.mlab import griddata
In [42]: import numpy as np
In [43]: N = 300
In [44]: x = np.random.rand(N) ; y = np.random.rand(N)
In [45]: z = np.sin(x*10)+np.cos(y*4)+0.05*np.random.rand(N)
In [46]: xi = yi = np.linspace(0,1)
In [47]: zi = griddata(x, y, z, xi, yi, interp='linear')
In [48]: plt.contour(xi, yi, zi, 10) ;
In [49]: plt.scatter(x, y, c=z) ;
In [50]: plt.colorbar() ;