python绘制气象等值线图_利用Python插值绘制等值线图
最近需要根据有限的站位点绘制插值等值线图,在网上中文搜索一通,只发现了这货Matplot Basemap 画湖北地图、插值、等值线,要么就是对这货的转载,这货不提供数据的形式,但是基本的代码思路还是不错的,于是继续转向google英文,搜到了如下的回答,我对代码做了注释,已备别人查询,关于文中提到的数据是txt格式的,我也直接将数据贴在下面了。总结一下:在地图上绘制等值线:
确定基本的绘图框架;
获取采集数据,与地图做映射,并根据映射数据插值;scipy.interpolate.griddata包插值比较快,常用的三种插值方法为liner(基于三角形的线性插补法),cubic(基于三角形的三次插补法),nearest( 最近邻居插补法),这些方法定义了匹配数据点的曲面类型,'cubic' 方法生成平滑曲面,而 'linear' 和 'nearest' 分别具有一阶导数和零阶导数不连续。
根据栅格插值数据绘图
# -*- coding: utf-8 -*-
@author: Adwiy Wang
import numpy as np
import pandas as pd
from matplotlib.mlab import griddata
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
from scipy.interpolate import griddata as gd
# 设置基本图片画板
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, axisbg='w', frame_on=False)
# 提取数据
data = pd.read_csv('datam.txt', delim_whitespace=True)
norm = Normalize()
#设置地图边界值
lllon = 21
lllat = -18
urlon = 34
urlat = -8
#初始化地图
m = Basemap(
projection = 'merc',
llcrnrlon = lllon, llcrnrlat = lllat, urcrnrlon = urlon, urcrnrlat = urlat,
resolution='h')
# 将经纬度点转换为地图映射点
data['projected_lon'], data['projected_lat'] = m(*(data.Lon.values, data.Lat.values))
# 生成经纬度的栅格数据
numcols, numrows = 1000, 1000
xi = np.linspace(data['projected_lon'].min(), data['projected_lon'].max(), numcols)
yi = np.linspace(data['projected_lat'].min(), data['projected_lat'].max(), numrows)
xi, yi = np.meshgrid(xi, yi)
# 插值
x, y, z = data['projected_lon'].values, data['projected_lat'].values, data.Z.values
zi = gd(
(data[['projected_lon', 'projected_lat']]),
data.Z.values,
(xi, yi),
method='cubic')
# 设置地图细节
m.drawmapboundary(fill_color = 'white')
m.fillcontinents(color='#C0C0C0', lake_color='#7093DB')
m.drawcountries(
linewidth=.75, linestyle='solid', color='#000073',
antialiased=True,
ax=ax, zorder=3)
m.drawparallels(
np.arange(lllat, urlat, 2.),
color = 'black', linewidth = 0.5,
labels=[True, False, False, False])
m.drawmeridians(
np.arange(lllon, urlon, 2.),
color = '0.25', linewidth = 0.5,
labels=[False, False, False, True])
# 等值面图绘制
con = m.contourf(xi, yi, zi, zorder=4, alpha=0.6, cmap='jet')
# 插入测绘点
m.scatter(
data['projected_lon'],
data['projected_lat'],
color='#545454',
edgecolor='#ffffff',
alpha=.75,
s=50 * norm(data['Z']),
cmap='jet',
ax=ax,
vmin=zi.min(), vmax=zi.max(), zorder=4)
# 插入色标、名称和范围
cbar = plt.colorbar(con,orientation='horizontal', fraction=.057, pad=0.05)
cbar.set_label("Mean Rainfall - mm")
m.drawmapscale(
24., -9., 28., -13,
100,
units='km', fontsize=10,
yoffset=None,
barstyle='fancy', labelstyle='simple',
fillcolor1='w', fillcolor2='#000000',
fontcolor='#000000',
zorder=5)
plt.title("Mean Rainfall")
plt.savefig("rainfall.png", format="png", dpi=300, transparent=True)
plt.show()
数据文件:datam.txt
on Lat Z
32.6 -13.6 41
27.1 -16.9 43
32.7 -10.2 46
24.2 -13.6 33
28.5 -14.4 43
28.1 -12.6 33
27.9 -15.8 46
24.8 -14.8 44
31.1 -10.2 35
25.9 -13.5 24
29.1 -9.8 10
25.8 -17.8 39
33.2 -12.3 44
28.3 -15.4 46
27.6 -16.1 47
28.9 -11.1 31
31.3 -8.9 39
31.9 -13.3 45
23.1 -15.3 31
31.4 -11.9 39
27.1 -15.0 42
24.4 -11.8 15
28.6 -13.0 39
31.3 -14.3 44
23.3 -16.1 39
30.2 -13.2 38
24.3 -17.5 32
26.4 -12.2 23
23.1 -13.5 27
python绘制气象等值线图_利用Python插值绘制等值线图相关推荐
- 用python绘制熊猫图案_利用Python进行数据分析_Pandas_绘图和可视化_Matplotlib
1 认识Figure和Subplot import matplotlib.pyplot as plt matplotlib的图像都位于Figure对象中 fg = plt.figure() 通过add ...
- python自定义函数画图_利用Python绘图和可视化(长文慎入)
Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...
- python解决物理问题_利用Python科学计算处理物理问题(和物理告个别)
背景: 2019 年初由于尚未学习量子力学相关知识,所以处于自学阶段.浅显的学习了曾谨言的量子力学一卷和格里菲斯编写的量子力学教材.注重将量子力学的一些基本概念了解并理解.同时老师向我们推荐了 Qua ...
- 利用python进行数据分析数据_利用Python进行数据分析
1.注释以及在Subplot上绘图 除标准的图表对象之外,你可能还希望绘制一些自定义的注释(比如文本.箭头或其他图形等). 注释可以通过text.arrow和annotate等函数进行添加.text可 ...
- python处理nc数据_利用python如何处理nc数据详解
利用python如何处理nc数据详解 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 利用python如何处理nc数据详解.txt ] (友情提示:右键点上行txt ...
- python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)
抱歉,对长沙房地产数据的挖掘与分析[三],想了蛮久,觉得对自己的分析结果不是很理想.等我完善好了,我再发出来吧.今天继续开启新的一专题.主要讲解如何用PYTHON实现简单的桌面软件的制作. 题外话,我 ...
- python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...
- 基于python的系统构建_利用python构建一个简单的推荐系统
摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...
- python实现邮件客户端_利用python实现简单的邮件发送客户端示例
脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...
- python批量生成图_利用Python批量生成任意尺寸的图片
实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...
最新文章
- js判断鼠标位置是否在某个div中
- python画板颜色_教你在python中用不同的方式画不同颜色的画布
- [导入]24小时第六季 剧情
- 转载:linux+arm 网卡故障调试:ethtoolphy寄存器读写
- 【Python基础】Pandas向量化字符串操作
- 带有Prometheus的弹簧靴和千分尺第5部分:旋转Prometheus
- java 正则匹配括号是否成对_十分钟学会正则表达式
- bmp文件格式_一次性解决CAD转换成BMP格式图片的问题
- matlab程序中for,matlab中的for循环
- 舍 bpftrace 而取 systemtap 的代价和思考
- npm 安装出错 npm ERR! request to https://registry.npmjs.org/express failed, reason: unable to verify th
- Android ViewPager + Fragment实现滑动页面
- Linux系统centos下如何通过命令查看CPU内存存储等硬件信息?
- 被野性消费的黄桃罐头,还能火多久!
- 昨天的梦想 今天的幸福
- php class中public,private,protected的区别以及实例分析
- 逆矩阵与矩阵的特征值的关系
- python保留两位小数_python保留小数位的三种实现方法
- 网贷风控体系之-系统架构
- python中的海归制图(turtle)绘制文字