文 | 潮汐

来源:Python 技术「ID: pythonall」

上一篇文章讲解了Basemap基础知识,今天的文章主要阐述 BaseMap 实战。话不多说,一起来实战吧!

BaseMap 画世界地图

BaseMap 画世界地图,主要方法是画地球海岸线,画国家分界线主要方法是:m.drawcoastlines()

BaseMap 画地球地图详细代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as npdef 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 = -latlats.append(lat)lon = float(info[3][:-1])if info[3][-1] == 'W': lon = -lon + 360.0lons.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 colormap.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 parameterssize_factor = 80.0y_offset = 15.0rotation = 30for i, j, k, name in zip(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__':drawearth()

绘制出的地球图片如下:

画投影地球

最后来画一个有投影的地球,详细代码如下:

def draw_earth1():import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapplt.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 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:潮汐

神器-可视化分析之Basemap实战详解(二)相关推荐

  1. R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比

    R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...

  2. flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...

    作为系列文章的第二十篇,本篇将结合官方的技术文档科普 Android 上 PlatformView 的实现逻辑,并且解释为什么在 Android 上 PlatformView 的键盘总是有问题. 为什 ...

  3. Flutter完整开发实战详解(二、 快速开发实战篇) | 掘金技术征文

     作为系列文章的第二篇,继<Flutter完整开发实战详解(一.Dart语言和Flutter基础)>之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速 ...

  4. R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置、置信区间、坐标轴(刻度、标签、范围)、无效线去除、水平线、辅助线、box形状、色彩等

    R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置.置信区间.坐标轴(刻度.标签.范围).无效线去除.水平线.辅助线.box形状.色彩等 目录

  5. 《Spark商业案例与性能调优实战100课》第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解

    <Spark商业案例与性能调优实战100课>第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解

  6. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...

    <Oracle大型数据库系统在AIX/UNIX上的实战详解> 讨论31:  oracle.sybase 数据库的不同访问方式   文平. 用户来信要求更细节比较一下Oracle和sybas ...

  7. 勘误表《网络规划设计师考试考点分析与真题详解》

    <网络规划设计师考试考点分析与真题详解>勘误表 首先,对本书在编写.校对.排版.印刷环节中的错漏,而给各位读者带来不便之处,深表最诚挚的歉意!也恳请各位专家.读者在使用过程中多提宝贵意见及 ...

  8. 新书预告《网络规划设计师考试考点分析与真题详解》

    新书预告<网络规划设计师考试考点分析与真题详解> 一年前,出版社有意与我约<网络规划设计师考试考点分析与真题详解>稿件,鉴于网络规划设计师是一门刚开考的考试科目,从一个事物的生 ...

  9. Oracle大型数据库系统在AIX/UNIX上的实战详解

    前言 风,紧, 夜,深沉, 剑,已出鞘, 影,飘然前行! 本书的立意和内容 在服务器领域,IBM p系列服务器与AIX操作系统毫无疑问是UNIX服务器领域中的佼佼者,它代表着UNIX深刻的技术内涵和广 ...

最新文章

  1. 初级搭建博客mysql_mysql 初级命令学习2
  2. Struts2-拦截器原理
  3. java执行shell命令
  4. hashmap 循环取出所有值 取出特定的值 两种方法
  5. 亮剑吧,掏出你吃灰的单片机板子。
  6. goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...
  7. 3389远程连接问题的一个解决办法
  8. python数字组合算法_python猜数字游戏快速求解解决方案
  9. windwos::mutex
  10. C语言程序设计知识必备pdf,C语言程序设计基础知识要点.pdf
  11. 驱动实验准备篇(如何给驱动签名)
  12. 图论知识及其应用初步调研
  13. 基于单片机的音频信号分析仪毕业设计
  14. python timepicker_Android之日期时间选择控件DatePicker和TimePicker
  15. pr如何跳到关键帧_(小白学PR不迷路)只要你用过PR,这些问题你一定遇到过
  16. 2022年医院三基考试药师(中医临床)考试模拟试题卷及答案
  17. vim 退格键(backspace)不能用
  18. C++ Tetris俄罗斯方块
  19. 按键精灵——电脑永不熄屏
  20. MySQL之库表设计篇:一到五范式、BC范式与反范式详解

热门文章

  1. Pj Immediate Decodability
  2. 如何写好一篇毕业论文?
  3. 有生之年转ta系列4pc手机图形api介绍
  4. CCF A类会议或期刊----多视图,多模态近两年论文
  5. 征途服务器维护后可以判国家吗,12月22日全服更新维护公告
  6. 北京格林深瞳算法实习生面试
  7. 微软 人立方:背后原理_时间到了:微软终于杀了我的人
  8. 一文搞定Pandas中的数据合并
  9. ljd-2008+下载式多功能实验开发系统_运动控制模型仿真实验平台(YXMCP-ATCA-150)...
  10. python的idel下添加清屏功能