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

 更新时间:2022年05月07日 14:23:18   作者:细细47  
最近项目中需要处理和分析NC数据,所以下面这篇文章主要给大家介绍了关于python读取nc数据并绘图的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

获取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数据绘图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV-Python 对图像的基本操作代码

    OpenCV-Python 对图像的基本操作代码

    这篇文章主要介绍了OpenCV-Python 对图像的基本操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 教你用Python代码实现合并excel文件

    教你用Python代码实现合并excel文件

    近几天一直因为excel文件太多太杂的原因苦恼,今天特地整理了本篇文章,文章介绍的非常详细,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • python可视化hdf5文件的操作

    python可视化hdf5文件的操作

    这篇文章主要介绍了python可视化hdf5文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Python编程之变量赋值操作实例分析

    Python编程之变量赋值操作实例分析

    这篇文章主要介绍了Python编程之变量赋值操作,结合实例形式分析了Python赋值、位移、多元赋值操作符等相关操作使用技巧,需要的朋友可以参考下
    2017-07-07
  • 用Python创建简易网站图文教程

    用Python创建简易网站图文教程

    今天给大家带来的是关于Python的相关知识,文章围绕着用Python创建简易网站展开,文中有非常详细的介绍及图文示例,需要的朋友可以参考下
    2021-06-06
  • Python中使用json.load()和json.loads()加载json数据的方法实例

    Python中使用json.load()和json.loads()加载json数据的方法实例

    在python编程中,我们经常要用到json对象作为数据交换格式,下面这篇文章主要给大家介绍了关于Python中使用json.load()和json.loads()加载json数据的方法实例,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 用python 批量操作redis数据库

    用python 批量操作redis数据库

    这篇文章主要介绍了如何用python 批量操作redis数据库,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • django+xadmin+djcelery实现后台管理定时任务

    django+xadmin+djcelery实现后台管理定时任务

    这篇文章主要介绍了django+xadmin+djcelery实现后台管理定时任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • python操作日期和时间的方法

    python操作日期和时间的方法

    经常获得了一个用户提交的当前日期,我们需要以这个日期为依据返回它的前一天、后一天的日期或者转换操作等。用Python可以非常简单的解决这些关于日期计算的问题
    2014-03-03
  • PyTorch一小时掌握之神经网络气温预测篇

    PyTorch一小时掌握之神经网络气温预测篇

    这篇文章主要介绍了PyTorch一小时掌握之神经网络气温预测篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09

最新评论