我正在尝试将热力图与我创建的世界地图结合起来。我得到了一个包含三列的CSV文件。第一列包含国家的名称,第二列和第三列分别包含纬度和经度。现在我编写了一个类,根据这些坐标在世界地图上绘制点。这个功能很好,但现在我想要一个热力图,因为只有几个点时一切看起来很好,但是我将拥有许多点。因此,根据国家中的点数和指定的边界,应该实现热力图。
这是一个 CSV 文件的示例:
import csv
class toMap:
def setMap(self):
filename = 'log.csv'
lats, lons = [], []
with open(filename) as f:
reader = csv.reader(f)
next(reader)
for row in reader:
lats.append(float(row[1]))
lons.append(float(row[2]))
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
map = Basemap(projection='robin', resolution='l', area_thresh=1000.0,
lat_0=0, lon_0=-130)
map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color='gray')
#map.bluemarble()
#map.drawmapboundary()
map.drawmeridians(np.arange(0, 360, 30))
map.drawparallels(np.arange(-90, 90, 30))
x, y = map(lons, lats)
map.plot(x, y, 'ro', markersize=3)
plt.show()
def main():
m = toMap()
m.setMap()
这是一个 CSV 文件的示例:
这是一个 CSV 文件的示例:
Vietnam,10.35,106.35
United States,30.3037,-97.7696
Colombia,4.6,-74.0833
China,35.0,105.0
Indonesia,-5.0,120.0
United States,38.0,-97.0
United States,41.7511,-88.1462
Bosnia and Herzegovina,43.85,18.3833
United States,33.4549,-112.0777