首页 > 解决方案 > 如何使用底图和matplotlib只显示一个国家的详细地图?

问题描述

我使用此代码在世界地图上绘制了 2 个纬度和经度坐标:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(projection='robin', lon_0=0, resolution='l')
lats = [24.48237852, 26.89169118]
lons = [118.1558955, 117.1760012]
m.drawcountries(color='#ffffff', linewidth=0.5)
m.fillcontinents(color='#c0c0c0', lake_color='#ffffff')
x, y = m(lons, lats)
plt.plot(x, y, 'bo', color='r', markersize=5)
plt.show()

这两点在中国。我只想显示中国地图,让中国地图看起来更大更详细。这两点可以看得更清楚。怎么做? 在此处输入图像描述

标签: pythonmatplotlibmatplotlib-basemap

解决方案


如果您只想绘制 1 个国家/地区,robin则投影与其他投影相比没有任何好处。无论如何,底图都不允许您这样做。我推荐merc(墨卡托)投影作为首发。如果您对要使用的地图投影有任何特定要求,那将是另一个话题。假设使用墨卡托投影,您的代码经过我的一些修改如下。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

ll_lon, ur_lon, ll_lat, ur_lat = 72, 136, 16, 54
m = Basemap(projection='merc', lon_0=0, resolution='l',
            llcrnrlon = ll_lon, urcrnrlon = ur_lon,
            llcrnrlat = ll_lat, urcrnrlat = ur_lat,
           )
lats = [24.48237852, 26.89169118]
lons = [118.1558955, 117.1760012]
m.drawcountries(color='#ffffff', linewidth=0.5)
m.fillcontinents(color='#c0c0c0', lake_color='#ffffff')
x, y = m(lons, lats)
plt.plot(x, y, 'bo', color='r', markersize=5)

plt.show()

你会得到这个情节:

china_on_merc


推荐阅读