python - 如何使用底图和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()
解决方案
如果您只想绘制 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()
你会得到这个情节:
推荐阅读
- python - pip无法连接,无法安装任何东西
- asp.net - 如何使用更新 DropDownList 的传递参数值自动更新 SqlDataSource,以便它在“Page_Load”期间显示
- python - pip 安装与本地包具有相同命名空间的包
- php - 联盟应用程序的雄辩关系结构
- java - 为什么这个程序在我的电脑上运行时不会返回任何东西?
- dask - Dask:有没有办法从任务中获取每个分区的 ID,这样我就可以在任务 f 中做一些不同的事情
- clojure - 雅达如何使用可选查询参数?
- python - 同一类不同实例的后续副本的深度复制时间加倍
- css - Primeflex Flexgrid 是否支持 IE11?让 flexgrid 在 IE 上运行的任何解决方法?
- java - 如何使用内部连接按页面请求排序