本节提要:在地图上插入图片、在地图上添加更多的人文信息、add_feature和add_geometries比较。
一、在地图上插入图片
在地图上插入预警图片,是比较常用的预警信息可视化技术,我想出的是一个笨办法:首先,利用cartopy绘制需要地区的地图,我的意见是需要去除外框线,视觉效果更好;然后,在需要的地方添加子图并利用imshow命令添加预警图片;最后,利用去除框线的命令使预警图的框线消失。 先导入可能要使用的库包:import cartopy.crs as ccrs import cartopy.io.shapereader as shpreaderimport matplotlib.pyplot as plt
然后准备各种缩写、限定值、存放路径:
plt.rcParams['font.sans-serif']=['SimHei']#解决中文显示extent=[108.2,110.8,29.1,31.401]#绘图范围proj=ccrs.PlateCarree()#简写赋值shppath=r'E:\shp\恩施土家族苗族自治州_行政边界\恩施土家族苗族自治州_行政边界.shp'shp=shpreader.Reader(shppath)
按照前面讲的内容,定义画布,添加绘制地图的主图:
fig=plt.figure(figsize=(4,4),dpi=500)ax=fig.add_axes([0,0,1,1],projection=proj)
随后绘制主图的地理信息,并去除框线等:
###############################以下为添加县市名称和点########################################nameandstation={
"恩施":[109.5,30.2],"利川":[109,30.3],"巴东":[110.34,31.04],"建始":[109.72,30.6],"宣恩":[109.49,29.987],"来凤":[109.407,29.493],"咸丰":[109.14,29.665],"鹤峰":[110.034,29.89]}for key,value in nameandstation.items(): ax.scatter(value[0] , value[1] , marker='.' , s=90 , color = "k" , zorder = 3) ax.text(value[0]-0.09 , value[1]+0.03 , key , fontsize = 10 , color = "k")ax.add_geometries(shp.geometries(),proj,facecolor='none',edgecolor='k')ax.set_extent(extent)ax.background_patch.set_visible(False)#去掉边框ax.outline_patch.set_visible(False)ax.set_title('插入预警图片')