保姆级教程:python读取并绘制nc数据
读取nc数据相关信息
#导入库
import netCDF4
from netCDF4 import Dataset#读取数据文件
nc_file=Dataset("/media/hsy/HSYWS/001DATA/VPD_DATA/vapor_pressure_deficit_1979.nc")#输出数据文件的两种方式
#nc_file
print(nc_file)
输出结果展示:
<class 'netCDF4._netCDF4.Dataset'> root group (NETCDF4 data model, file format HDF5): Conventions: CF-1.4
created_by: R, packages ncdf4 and raster (version 3.3-13)
date: 2021-10-08 13:21:50
dimensions(sizes): Longitude(1440), Latitude(721), Time(365)
variables(dimensions): int32 crs(), float64 Longitude(Longitude), float64 Latitude(Latitude), int32 Time(Time), float32 VPD(Time, Latitude, Longitude)
groups:
#所有变量读取
print(nc_file.variables.keys())#输出结果:dict_keys(['crs', 'Longitude', 'Latitude', 'Time', 'VPD'])#单个变量读取
nc_file['Longitude']
#print(nc_file.variables['Longitude'])"""<class 'netCDF4._netCDF4.Variable'>
float64 Longitude(Longitude)units: degrees_eastlong_name: Longitude
unlimited dimensions:
current shape = (1440,)
filling on, default _FillValue of 9.969209968386869e+36 used"""print(nc_file.variables['crs'])
结果输出解读:
<class 'netCDF4._netCDF4.Variable'> #文件数据类型
int32 crs()
proj4: +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs #proj4坐标系参数,详情请见:Quick start — PROJ 9.1.0 documentation
unlimited dimensions:
current shape = () filling on, default _FillValue of -2147483647 used
#单个变量的所有属性名称
print(nc_file.variables['VPD'].ncattrs())
#['_FillValue', 'long_name', 'grid_mapping', 'proj4', 'min', 'max']print(nc_file.variables['VPD'].proj4)#proj4坐标系
print(nc_file.variables['VPD'].grid_mapping)#给定坐标变量与真实经纬度坐标之间的映射关系:crs
print(nc_file.variables['VPD']._FillValue)#填充值或空值#读取变量的维度
print(nc_file['VPD'].shape)
#(365, 721, 1440) (#time, latitude, longitude) 格点分辨率为:天*0.25*0.25度。#读取变量值
VPD=nc_file.variables['VPD'][:]
print(VPD)#读取结果含有全部数值。
#print(nc_file['VPD'])#输出结果不完整
绘图
1、利用matplotlib绘图
import matplotlib.pyplot as plt
plt.contourf(long, lat, VPD[10, :, :] )
plt.colorbar(label="VPD", orientation="horizontal")
plt.show()
2、利用basemap绘图
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as nplon0 = long.mean()
lat0 = lat.mean()
# 设置投影方式:cyl为圆柱投影、还可设置merc为mercator投影 llcrnrlat为起始lat;urcrnrlat为终止lat
# m = Basemap(projection='merc', llcrnrlat=lat[0], urcrnrlat=lat[-1], \
# llcrnrlon=lon[0], urcrnrlon=lon[-1], ax=ax1)
# 参数 "resolution" 用于控制地图面积边缘的精细程度,有'l'和'h'两种取值
m = Basemap(lat_0=lat0, lon_0=lon0,projection='cyl',resolution='l')
# 绘制等经纬度线 纬度每隔20度画一条线,且标注经纬度
m.drawparallels(np.arange(-90., 91., 20.), labels=[1, 0, 0, 0], fontsize=10)
m.drawmeridians(np.arange(-180., 181., 40.), labels=[0, 0, 0, 1], fontsize=10)
m.drawcoastlines()# 绘制海岸线lon, lat = np.meshgrid(long, lat)
xi, yi = m(lon, lat)
# cmap是图形颜色,还可选‘jet’、‘spring’、‘winter’、'summer'、'autumn'
cs = m.contourf(xi, yi, VPD[10], cmap='summer')
# pad指位置,
cbar = m.colorbar(cs, location='bottom', pad="10%",format='%.1f')
font1 = {'family': 'DejaVu Sans', 'weight': 'normal', 'size': 16}
plt.title('VPD', font1)
plt.show()
3、利用cartopy绘图
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
proj = ccrs.PlateCarree()
fig = plt.figure(figsize=(15, 7))
fig, ax = plt.subplots(1, 1, subplot_kw={'projection': proj})
# 或者 ax = fig.add_subplot(111,proj=proj)
lon1 = nc_file.variables['Longitude'][:]
lat1 = nc_file.variables['Latitude'][:]
print(lon1.shape, lat1.shape)
ax.contourf(lon, lat, VPD[100])
ax.coastlines(resolution = '10m')#添加格网
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
# 设置 gridlines 和 ticklabels
gl = ax.gridlines(draw_labels = True, linewidth = 1.5)
gl.xlabels_top = False
gl.xlines = True
gl.xformatter = LONGITUDE_FORMATTER
gl.ylabels_right = False
gl.ylines = True
gl.yformatter = LATITUDE_FORMATTERplt.show()
保姆级教程:python读取并绘制nc数据相关推荐
- 保姆级教程!将 Vim 打造一个 IDE (Python 篇)
从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...
- 【图解SHA1杂凑算法】SHA1杂凑算法的Python实现保姆级教程 | 物联网安全 | 信息安全
系列索引:[图解安全加密算法]加密算法系列索引 Python保姆级实现教程 | 物联网安全 | 信息安全 起初写实验时找到的代码大多基于c/c++,python可参考的资料很少,所以借着这次实验的机会 ...
- 保姆级教程如何用Xcode搭建python环境
保姆级教程如何用mac电脑中的Xcode搭建python环境(xcode12) 「mac电脑自带python2.7,你也可以更新你的python版本」 打开Xcode,点击file-new-proje ...
- Tkinter保姆级教程(下)
继上次肝了几天的Tkinter保姆级教程(上),接下来继续肝教程下,冲冲冲. 目录 Scale控件 Canvas画布控件 Menu菜单控件 Scrollbar滚动条控件 Event事件处理 布局管理器 ...
- 天才少年稚晖君 | 【保姆级教程】个人深度学习工作站配置指南
天才少年稚晖君 | [保姆级教程]个人深度学习工作站配置指南 来源:https://zhuanlan.zhihu.com/p/336429888 0. 前言 工作原因一直想配置一台自己的深度学习工作站 ...
- AI绘图–Disco Diffusion使用指南+本地化保姆级教程
文章封面为个人AI绘图训练结果 项目传送门:传送门 (谷歌警告) 该项目为免费使用的AI绘图项目,并且可以在本地搭建部署环境. AI绘图对于人脸处理仍处于较为实现困难的阶段,因此该项目更适合用于各类场 ...
- 数仓建设保姆级教程,离线和实时一网打尽(理论+实战)
本文大纲: 因内容较多,带目录的PDF查看是比较方便的,点击下方链接获取完整PDF版: 数仓建设保姆级教程PDF文档 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先 ...
- 目标检测算法——YOLOv7训练自己的数据集(保姆级教程)
>>>深度学习Tricks,第一时间送达<<< 目录 YOLOv7训练自己的数据集(保姆级教程): 一.YOLOv7源代码下载 二.安装深度学习环境 三.准备自己的 ...
- 万字长文:Stable Diffusion 保姆级教程
万字长文:Stable Diffusion 保姆级教程 2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 C ...
最新文章
- 模型加速--LCNN: Lookup-based Convolutional Neural Network
- jQuery学习笔记——事件
- ios 处理WKContentView的crash
- 【CyberSecurityLearning 55】SQL注入
- python入门23 pymssql模块(python连接sql server增删改数据 )
- 从零开始学视觉Transformer(2):图像与Transformer基础
- Android 系统(48)---WindowManager.LayoutParams 详解
- 第十章:XAML标记扩展(三)
- S3TC IAP15F2K61S2点亮一个发光二极管keil和stc-isp软件操作
- application跟消息相关的东东
- Day.js 常用方法
- C语言推箱子完整代码
- (How to)使用IE9的F12开发人员工具分析模拟登陆网站(百度首页)的内部逻辑过程
- WordPress社交问答社区主题模板
- html图片格式有什么,jpeg是一种什么格式?
- 9.5 隐函数求导法则
- 会员管理系统(一)--页面登陆与注册
- 我的2007-高开低走,无甚成就
- 数码管显示驱动方法(74HC138译码器的使用)
- 【C++】面向对象之继承篇