神器-可视化分析之Basemap实战详解(二)
文 | 潮汐
来源: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实战详解(二)相关推荐
- R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比
R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...
- flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...
作为系列文章的第二十篇,本篇将结合官方的技术文档科普 Android 上 PlatformView 的实现逻辑,并且解释为什么在 Android 上 PlatformView 的键盘总是有问题. 为什 ...
- Flutter完整开发实战详解(二、 快速开发实战篇) | 掘金技术征文
作为系列文章的第二篇,继<Flutter完整开发实战详解(一.Dart语言和Flutter基础)>之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速 ...
- R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置、置信区间、坐标轴(刻度、标签、范围)、无效线去除、水平线、辅助线、box形状、色彩等
R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置.置信区间.坐标轴(刻度.标签.范围).无效线去除.水平线.辅助线.box形状.色彩等 目录
- 《Spark商业案例与性能调优实战100课》第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解
<Spark商业案例与性能调优实战100课>第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解
- 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...
<Oracle大型数据库系统在AIX/UNIX上的实战详解> 讨论31: oracle.sybase 数据库的不同访问方式 文平. 用户来信要求更细节比较一下Oracle和sybas ...
- 勘误表《网络规划设计师考试考点分析与真题详解》
<网络规划设计师考试考点分析与真题详解>勘误表 首先,对本书在编写.校对.排版.印刷环节中的错漏,而给各位读者带来不便之处,深表最诚挚的歉意!也恳请各位专家.读者在使用过程中多提宝贵意见及 ...
- 新书预告《网络规划设计师考试考点分析与真题详解》
新书预告<网络规划设计师考试考点分析与真题详解> 一年前,出版社有意与我约<网络规划设计师考试考点分析与真题详解>稿件,鉴于网络规划设计师是一门刚开考的考试科目,从一个事物的生 ...
- Oracle大型数据库系统在AIX/UNIX上的实战详解
前言 风,紧, 夜,深沉, 剑,已出鞘, 影,飘然前行! 本书的立意和内容 在服务器领域,IBM p系列服务器与AIX操作系统毫无疑问是UNIX服务器领域中的佼佼者,它代表着UNIX深刻的技术内涵和广 ...
最新文章
- 初级搭建博客mysql_mysql 初级命令学习2
- Struts2-拦截器原理
- java执行shell命令
- hashmap 循环取出所有值 取出特定的值 两种方法
- 亮剑吧,掏出你吃灰的单片机板子。
- goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...
- 3389远程连接问题的一个解决办法
- python数字组合算法_python猜数字游戏快速求解解决方案
- windwos::mutex
- C语言程序设计知识必备pdf,C语言程序设计基础知识要点.pdf
- 驱动实验准备篇(如何给驱动签名)
- 图论知识及其应用初步调研
- 基于单片机的音频信号分析仪毕业设计
- python timepicker_Android之日期时间选择控件DatePicker和TimePicker
- pr如何跳到关键帧_(小白学PR不迷路)只要你用过PR,这些问题你一定遇到过
- 2022年医院三基考试药师(中医临床)考试模拟试题卷及答案
- vim 退格键(backspace)不能用
- C++ Tetris俄罗斯方块
- 按键精灵——电脑永不熄屏
- MySQL之库表设计篇:一到五范式、BC范式与反范式详解
热门文章
- Pj Immediate Decodability
- 如何写好一篇毕业论文?
- 有生之年转ta系列4pc手机图形api介绍
- CCF A类会议或期刊----多视图,多模态近两年论文
- 征途服务器维护后可以判国家吗,12月22日全服更新维护公告
- 北京格林深瞳算法实习生面试
- 微软 人立方:背后原理_时间到了:微软终于杀了我的人
- 一文搞定Pandas中的数据合并
- ljd-2008+下载式多功能实验开发系统_运动控制模型仿真实验平台(YXMCP-ATCA-150)...
- python的idel下添加清屏功能