python读取nc数据并绘图的方法实例

目录
  • 获取nc数据的相关信息
  • 绘图
    • 用matplotlib绘图
    • 用Basemap绘图
    • 用Cartopy绘图
  • 总结

获取nc数据的相关信息

from netCDF4 import Dataset
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt

path = "F:\\OCO2.SIF.all.daily.2001.nc"
csv_path = "F:\\test.csv"
dst = Dataset(path, mode='r', format="netCDF4")

 print(dst.variables.keys())
    data = dst.variables['all_daily_sif'][:]
    print(data.shape)
    # 输出结果如下:
    # dict_keys(['lat', 'lon', 'doy', 'all_daily_sif'])
    # (92, 360, 720)
    #可见有92个时间序列,经度(lon)、纬度(lat)的取值有720,360个

    # # 查看数据经纬度范围,经度-179.75~179.75,其中负值为西经,正值为东经;纬度正为北纬,负为南纬
    # # 格点分辨率为0.5度
    long = dst.variables['lon'][:]
    lati = dst.variables['lat'][:]
    print(long[0], long[-1], lati[0], lati[-1])
    print(long.shape, lati.shape)

绘图

用matplotlib绘图

参考文献1

 # plt对某个doy的全球sif值作图。左半部分为西半球,右边是东半球
    # 选了doy为10的sif数据作图
    plt.contourf(long, lati, data[10, :, :] )
    plt.colorbar(label="Sif", orientation="horizontal")
    plt.show()

运行结果:

用Basemap绘图

参考文献2

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

    lat = dst.variables['lat'][:]
    lon = dst.variables['lon'][:]
    data = dst.variables['all_daily_sif'][:]
    data[10] = data[10]
    # use .shape function to check that arrays have
    # the correct size.
    # e.g. lon.shape
    print(data[10].shape)

    lon0 = lon.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()# 绘制海岸线
    # m.drawcountries(linewidth=0.25)  # 绘制国界线
    # m.readshapefile('F:\E\data\grass_yield\shp\quhua\\省', 'states')  # 读取中国各省边界,并绘图

    lon, lat = np.meshgrid(lon, lat)
    xi, yi = m(lon, lat)
    # cmap是颜色,还可选‘jet'、‘spring'、‘winter'、'summer'、'autumn'
    cs = m.contourf(xi, yi, data[10],  cmap='summer')
    # pad指位置,
    cbar = m.colorbar(cs, location='bottom', pad="10%",format='%.1f')
    # cbar = m.colorbar(C, 'right', ticks=np.arange(-128, 128, 40), format='%.1f')
    font1 = {'family': 'DejaVu Sans', 'weight': 'normal', 'size': 16}
    plt.title('CSIF', font1)
    plt.show()

运行效果:

用Cartopy绘图

参考文献3

此前 Python 最常用的地图包是 Basemap,然而它将于 2020 年被弃用,官方推荐使用 Cartopy 包作为替代。Cartopy 是英国气象局开发的地图绘图包,实现了 Basemap 的大部分功能,还可以通过 Matplotlib 的 API 实现丰富的自定义效果。

安装Cartopy包

下载安装OSGeo4W4

参考文献:https://zhuanlan.zhihu.com/p/129351199

参考文献:https://blog.csdn.net/weixin_39618339的plt画图像图例的位置怎么写代码_用basemap画气象图

参考文献: https://zhajiman.github.io/

https://trac.osgeo.org/osgeo4w/

总结

到此这篇关于python读取nc数据并绘图的文章就介绍到这了,更多相关python读取nc数据绘图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何用python合并多个有规则命名的nc文件

    现有多个nc文件,命名除了年份不同外,其他皆相同.希望将多个的nc文件合并为一个. 其中,每个nc文件内包含如下内容,包含12个月均数据 因此,我们可以知道,合并两个nc文件,time应该=‘24’,合并三个,time=‘36’.以此类推,合并x年,time=x*12. 主要通过xarray实现合并功能,并写出合并后的nc文件: #导入用到的库 import xarray as xr import os #首先,利用一个循环将需要合并的年份挑选出来.我这里选择1982-2012年的数据 file

  • python的netCDF4批量处理NC格式文件的操作方法

    目录 一.使用ArcMap提取出第一期数据 1.使用工具箱中的“Make NetCDF Raster Layer”工具,提取出一个数据 2.导出该数据作为标准数据 二.使用python批量提取所有数据 1. 查看数据属性 2.批量导出结果 !注意事项 一.使用ArcMap提取出第一期数据 1.使用工具箱中的“Make NetCDF Raster Layer”工具,提取出一个数据 可以发现该数据有正确的像元大小.坐标系等 2.导出该数据作为标准数据 二.使用python批量提取所有数据 1. 查看

  • python读取nc数据并绘图的方法实例

    目录 获取nc数据的相关信息 绘图 用matplotlib绘图 用Basemap绘图 用Cartopy绘图 总结 获取nc数据的相关信息 from netCDF4 import Dataset import numpy as np import pandas as pd import os import matplotlib.pyplot as plt path = "F:\\OCO2.SIF.all.daily.2001.nc" csv_path = "F:\\test.c

  • Python 读取串口数据,动态绘图的示例

    最近工作需要把单片机读取的传感器电压数据实时在PC上通过曲线显示出来,刚好在看python, 就试着用了python 与uart端口通讯,并且通过matplotlib.pyplot 模块实时绘制图形出来. 1. 废话少说,上图 因为没有UI,运行时需要在提示符下输入串口相关参数,com端口,波特率... 代码如下: #-*- coding: utf-8 -*- # 串口测试程序 import serial import matplotlib.pyplot as plt import numpy

  • Python如何利用pandas读取csv数据并绘图

    目录 如何利用pandas读取csv数据并绘图 绘制图像 展示结果 pandas画pearson相关系数热力图 pearson相关系数计算函数 如何利用pandas读取csv数据并绘图 导包,常用的numpy和pandas,绘图模块matplotlib, import matplotlib.pyplot as plt import pandas as pd import numpy as np fig = plt.figure() ax = fig.add_subplot(111) 读取csv文

  • Python读取pdf表格写入excel的方法

    背景 今天突然想到之前被要求做同性质银行的数据分析.妈耶!十几个银行,每个银行近5年的财务数据,而且财务报表一般都是 pdf 的,我们将 pdf 中表的数据一个个的拷贝到 excel 中,再借助 excel 去进行求和求平均等聚合函数操作,完事了还得把求出来的结果再统一 CV 到另一张表中,进行可视化分析- 当然,那时风流倜傥的 老Amy 还熟练的玩转着 excel ,也是个秀儿~ 今天就思索着,如果当年我会 Python 是不是可以让我成为班级最靓的崽!用技术占领高地,HHH,所以今天我来了,

  • 利用python如何处理nc数据详解

    前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是"知行合一"来的更靠谱些,既要知道理论又要知道如何实现,于是经过不太充分的研究后总结成此文,以记录如何使用 python 处理 nc 数据. 一.nc 数据介绍 nc 全称 netCDF(The Network Common Data Form),可以用来存储一系列的数组,就是这么简单(参考

  • Python3读取Excel数据存入MySQL的方法

    Python是数据分析的强大利器. 利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理. 这里向大家分享python3如何使用xlrd读取excel,并使用Python3操作pymysql模块将数据存入Mysql中,有需要的朋友们一起来看看吧. 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. python操作excel主要用

  • python读取并写入mat文件的方法

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入mat文件: import scipy.io data = scipy.io.loadmat('matData.mat') # 读取mat文件 # print(data.keys()) # 查看mat文件中的所有变量 print(data['ma

  • Python读取文件内容为字符串的方法(多种方法详解)

    以下笔记是我在 xue.cn 学习群之数据分析小组所整理分享的心得.相关背景是:我选择中文词频统计案例作为考察大家python基础功掌握程度. 以小见大,下面是2个小技能的具体实战: 如何灵活地处理文件读取 如何把数据处理为自己想要的数据类型 方法1: 拷贝文章时,直接把内容赋值给一个变量,保存到一个 .py 文件中.然后在脚本中,导入它. 存储文章的文件 article.py content = """ 复制的文章内容 """ 存储脚本的文件 

  • python读取mysql数据绘制条形图

    本文实例为大家分享了python读取mysql数据绘制条形图的具体代码,供大家参考,具体内容如下 Mysql 脚本示例: create table demo( id int ,product varchar(50) ,price decimal(18,2) ,quantity int ,amount decimal(18,2) ,orderdate datetime ); insert into demo select 1,'AAA',15.2,5,76,'2017-09-09' union a

  • python读取excel数据绘制简单曲线图的完整步骤记录

    python读写excel文件有很多种方法: 用xlrd和xlwt进行excel读写 用openpyxl进行excel读写 用pandas进行excel读写 本文使用xlrd读取excel文件(xls,sxls格式),使用xlwt向excel写入数据 一.xlrd和xlwt的安装 安装很简单,windos+r调出运行窗口,输入cmd,进入命令行窗口,输入以下命令. 安装xlrd: pip install xlrd 安装xlwt: pip install xlwt xlrd的API(applica

随机推荐