
文 | 潮汐
来源:Python 技术「ID: pythonall」
上一篇文章讲解了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()
绘画结果图如下:
总结今天的文章就到这里啦,希望今天的文章对大家有帮助!
PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
【代码获取方式】
识别文末二维码,回复:潮汐
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)