我有一个经度/纬度的数据集如下:
id,spp,lon,lat
1a,sp1,1,9
1b,sp1,3,11
1c,sp1,6,12
2a,sp2,1,9
2b,sp2,1,10
2c,sp2,3,10
2d,sp2,4,11
2e,sp2,5,12
2f,sp2,6,12
3a,sp3,4,13
3b,sp3,5,11
3c,sp3,8,8
4a,sp4,4,12
4b,sp4,6,11
4c,sp4,7,8
5a,sp5,8,8
5b,sp5,7,6
5c,sp5,8,2
6a,sp6,8,8
6b,sp6,7,5
6c,sp6,8,3
我想使用Matplotlib / Basemap显示一张表示地理地图上点的密度的热图,使用下面的代码(或多或少基于this one):
from mpl_toolkits.basemap import Basemap
from matplotlib import cm as cmap
import matplotlib.pyplot as plt
import numpy as np
import warnings
warnings.filterwarnings("ignore")
# input data
coords = np.loadtxt("testdata.csv", delimiter=',', skiprows=1, usecols=(2, 3))
lon = coords[:,0]
lat = coords[:,1]
# create map
m = Basemap(width=12000000, height=9000000, projection='lcc',
resolution='c', lat_0=6, lon_0=4.)
m.drawcoastlines(linewidth=0.25)
# create heatmap
heatmap, xedges, yedges = np.histogram2d(lon, lat, bins=20)
# plot map
##plt.clf()
m.imshow(heatmap.T, interpolation='none', cmap=cmap.jet)
plt.show()
但是,会显示热图,但不显示地图(参见附图)
这看起来与this question相反,其中显示的是地图而不是热图(但是这个解决方案对我来说并不是很有用)。
任何提示?