爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14882|回复: 14

[经验总结] python源码在此,请问怎么把nc文件数据在可视化时将lev从底层到高层排列?源码分享

[复制链接]

新浪微博达人勋

发表于 2019-3-25 21:16:00 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 王先生 于 2019-3-25 21:38 编辑

# -*- coding: utf-8 -*-

"""
Created on Fri Mar  24 17:47:41 2019
@author: WYL
"""
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
import netCDF4 as nc
from netCDF4 import Dataset

obj = nc.Dataset("f:/merra2/QV/MERRA2_400.inst3_3d_asm_Np.20120601.SUB.nc4")
time_bnds = obj.variables['time_bnds'][:]
time = obj.variables['time'][0]
lev = obj.variables['lev'][:]
lat = obj.variables['lat'][:]
lon = obj.variables['lon'][220:280]
QV = obj.variables['QV'][0,:,100,220:280]
plt.figure(figsize=(16,8))
lons,levs = np.meshgrid(lon,lev)
x,y = lons,levs
lev=lon[::-1]
shade = plt.contourf(x,y,QV,20,cmap = 'jet')
plt.colorbar(shade)
print(help(plt.contourf))
plt.show()
如上传的图片,现在绘制的是个水汽(QV)垂直切面分布图。画图的时候发现nc4文件中lev项是从高空到地面的,求问写代码时候怎么反过来啊。。。这图是倒着的。源码分享给大家,希望会的帮看下应该怎么做更改,刚学了不久。
感谢@ 的指点,问题目前已经解决。代码放着给有需要的和我一样的新手。如果对代码有什么疑问或者代码错误,请及时指正,本人日常在线
QQ图片20190325205942.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-25 21:26:28 | 显示全部楼层
plt.gca().invert_yaxis()
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-25 21:20:42 | 显示全部楼层
自己给自己顶一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-25 21:34:56 | 显示全部楼层
Masterpiece 发表于 2019-3-25 21:26
plt.gca().invert_yaxis()

谢谢大神指点,成了。请问下这个语句只是将Y轴反转了一下是吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-25 21:42:00 | 显示全部楼层
王先生 发表于 2019-3-25 21:34
谢谢大神指点,成了。请问下这个语句只是将Y轴反转了一下是吗

是的,正如你所见
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-25 21:46:40 | 显示全部楼层
气压的坐标轴应该是取对数的,不是等距离分布的,要怎么弄。grads里是set zlog on
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-25 21:49:39 | 显示全部楼层
LemonTree007 发表于 2019-3-25 21:46
气压的坐标轴应该是取对数的,不是等距离分布的,要怎么弄。grads里是set zlog on

你问的这个我还真不知道,这里我的数据是位势高度,没考虑你说的这个问题,我现在去研究一下。感谢提问。有答案了我会及时回复你
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-25 22:35:34 | 显示全部楼层
LemonTree007 发表于 2019-3-25 21:46
气压的坐标轴应该是取对数的,不是等距离分布的,要怎么弄。grads里是set zlog on

https://blog.csdn.net/m0_37362454/article/details/81510617,在CSDN里找到了这个你看一下,然而我新手看不懂,觉得应该是他里面提到的操作方法。如果看会了回头指导我下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-25 23:50:06 | 显示全部楼层
本帖最后由 Masterpiece 于 2019-3-25 23:51 编辑
LemonTree007 发表于 2019-3-25 21:46
气压的坐标轴应该是取对数的,不是等距离分布的,要怎么弄。grads里是set zlog on
import matplotlib.ticker as ticker
ax.set_yscale('log')
ax1 = plt.gca().yaxis
ax1.set_major_formatter(ticker.ScalarFormatter())
plt.minorticks_off()
plt.yticks([100,300,500,700,850,925,1000])
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-26 12:49:57 | 显示全部楼层
Masterpiece 发表于 2019-3-25 23:50
import matplotlib.ticker as ticker
ax.set_yscale('log')
ax1 = plt.gca().yaxis

ax和ax1区别是什么呢?不太懂,可以说的稍微详细点么谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表