转载本文请联系Python技术公众号。上一篇文章讲解了Basemap的基础知识,今天的文章主要讲解BaseMap的实战。话不多说,一起战斗吧!BaseMap绘制世界地图BaseMap绘制世界地图,主要方法是绘制地球的海岸线,绘制国界的主要方法是:m.drawcoastlines()BaseMap绘制地球地图。详细代码如下:importmatplotlib.pyplotaspltfrommpl_toolkits.basemapimportBasemapimportnumpyasnpdefdrawcoast():plt.figure(figsize=(12,8))m=Basemap()#创建地图m.drawcoastlines()#绘制海岸线plt.show()#显示图像if__name__=='__main__':drawcoast()运行结果如下:用BaseMap绘制中国地图用BaseMap绘制中国地图时,需要添加中国的经纬度信息。详细方法如下:#绘制中国地图defdraw_china():plt.figure(figsize=(10,6))m=Basemap(llcrnrlon=77,llcrnrlat=14,urcrnrlon=140,urcrnrlat=51,projection='lcc',lat_1=33,lat_2=45,lon_0=100)m.drawcountries(linewidth=1.5)m.drawcoastlines()plt.show()中国地图显示如下:用BaseMap绘制地球defdraw_basic():map=Basemap(projection='ortho',lat_0=0,lon_0=0)map.drawmapboundary(fill_color='aqua')map.fillcontinents(color='gray',lake_color='aqua')map.drawcoastlines()plt.show()显示图片如下:使用BaseMap绘制人口分布图根据添加的各城市主要人口分布绘制城市人口分布图,详细方法及代码如下:defdrawwearth():names=[]pops=[]lats=[]lons=[]countries=[]file=open("data/main_city",encoding='utf-8').readlines()forlineinfile:info=line.split()names.append(info[0])pops.append(float(info[1]))lat=float(info[2][:-1])ifinfo[2][-1]=='S':lat=-latlats.append(lat)lon=float(info[3][:-1])ifinfo[3][-1]=='W':lon=-lon+360.0lons.append(lon)country=info[4]countries.append(country)#setupmapprojectionwith#uselowresolutioncoastlines.map=Basemap(projection='ortho',lat_0=35,lon_0=120,resolution='l')#drawcoastlines,countryboundaries,fillcontinents.map.drawcoastlines(linewidth=0.25)map.drawcountries(linewidth=0.25)#drawtheedgeofthemapprojectionregion(theprojectionlimb)map.drawmapboundary(fill_color='#689CD2')#drawlat/longridlinesevery30degrees.map.drawmeridians(np.arange(0,360,30))map.drawparallels(np.arange(-90,90,30))#Fillcontinentwitadifferentcolormap.fillcontinents(color='#BF9E30',lake_color='#689CD2',zorder=0)#computenativemapprojectioncoordinatesoflat/longrid.x,y=map(lons,lats)max_pop=max(pops)#Ploteachcityinaloop。#Setsomeparameterssize_factor=80.0y_offset=15.0rotation=30fori,j,k,nameinzip(x,y,pops,names):size=size_factor*k/max_popcs=map.scatter(i,j,s=size,marker='o',color='#FF5600')plt.text(i,j+y_offset,name,rotation=rotation,fontsize=10)plt.title('earth')plt.show()if__name__=='__main__':drawwearth()绘制的地球图片如下:绘制投影地球最后绘制投影地球,详细代码如下:defdraw_earth1():importmatplotlib.pyplotaspltfrommpl_toolkits.basemapimportBasemapplt.figure(figsize=(8,8))#正交投影,投影原点设置在AroundShanghaim=Basemap(projection='ortho',resolution=None,lat_0=30,lon_0=120)#图像原始分辨率为5400*2700,设置scale=0.5后,分辨率是2700*1350,所以画#速度快,内存占用少m.bluemarble(scale=0.5)plt.show()if__name__=='__main__':draw_earth1()绘制结果如下:今天的总结文章就到这里了,希望今天的文章对大家有所帮助!
