可视化分析之 Basemap 实战详解
本文转载自微信公众号「Python技术」,可视作者派森酱 。化分转载本文请联系Python技术公众号。战详
上一篇文章讲解了Basemap基础知识,可视今天的化分文章主要阐述 BaseMap 实战。话不多说,战详一起来实战吧!
BaseMap 画世界地图
BaseMap 画世界地图,可视主要方法是源码下载化分画地球海岸线,画国家分界线主要方法是战详:m.drawcoastlines()
BaseMap 画地球地图详细代码如下:
import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap import numpy as np def drawcoast(): plt.figure(figsize=(12, 8)) m = Basemap() # 创建一个地图 m.drawcoastlines() # 画海岸线 plt.show() # 显示图像 if __name__ == __main__: drawcoast()运行结果图如下:
用 BaseMap 画中国地图
使用 BaseMap 画中国地图时需要增加中国的经纬度信息,详细方法如下:
# 画中国地图 def draw_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 绘制地球
def draw_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 绘制人口分布图
根据添加的各个城市的主要人口分布后绘制出城市人口分布地图,详细方法和代码如下:
def drawearth(): names = [] pops = [] lats = [] lons = [] countries = [] file = open("data/main_city",化分 encoding=utf-8).readlines() for line in file: info = line.split() names.append(info[0]) pops.append(float(info[1])) lat = float(info[2][:-1]) if info[2][-1] == S: lat = -lat lats.append(lat) lon = float(info[3][:-1]) if info[3][-1] == W: lon = -lon + 360.0 lons.append(lon) country = info[4] countries.append(country) # set up map projection with # use low resolution coastlines. map = Basemap(projection=ortho, lat_0=35, lon_0=120, resolution=l) # draw coastlines, country boundaries, fill continents. map.drawcoastlines(linewidth=0.25) map.drawcountries(linewidth=0.25) # draw the edge of the map projection region (the projection limb) map.drawmapboundary(fill_color=#689CD2) # draw lat/lon grid lines every 30 degrees. map.drawmeridians(np.arange(0, 360, 30)) map.drawparallels(np.arange(-90, 90, 30)) # Fill continent wit a different color map.fillcontinents(color=#BF9E30, lake_color=#689CD2, zorder=0) # compute native map projection coordinates of lat/lon grid. x, y = map(lons, lats) max_pop = max(pops) # Plot each city in a loop. # Set some parameters size_factor = 80.0 y_offset = 15.0 rotation = 30 for i, j, k, name in zip(x, y, pops, names): size = size_factor * k / max_pop cs = 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__: drawearth()绘制出的站群服务器地球图片如下:
画投影地球
最后来画一个有投影的地球,详细代码如下:
def draw_earth1(): import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap plt.figure(figsize=(8,战详 8)) # 正射投影,投影原点设在了上海周边 m = 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()绘画结果图如下:
总结
今天的文章就到这里啦,希望今天的亿华云计算战详文章对大家有帮助!