爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12594|回复: 5

[求助] python读nc文件画图只出负值

[复制链接]

新浪微博达人勋

发表于 2019-9-19 11:19:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 11001阿百川 于 2019-9-19 11:20 编辑

大家好,本人python小白,在看了经验帖后尝试画某月海温的时候(后面还要算季节平均和距平),发现只能画出负值,和经验贴对比没发现哪里有问题,数据是sst.mnmean.nc。
一开始先用IDE看了数据结构:
求助2019-09-19 1.jpg
求助 2019-09-19 3.jpg
下面是VS下运行的程序:
#sst_jja
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
nc_ob = nc.Dataset('D:/data.sst/sst.mnmean.nc')
print(nc_ob.variables.keys())
lon = nc_ob.variables['lon']
lon = np.array(lon)
lat = nc_ob.variables['lat']
lat = np.array(lat)
temperature = nc_ob.variables['sst']
temperature = np.array(temperature)
temperature_need = temperature[1933,-90:90,0:358]
map = Basemap(llcrnrlon = 0, llcrnrlat = -90, urcrnrlon = 360, urcrnrlat = 90)
map.drawcoastlines()
map.drawcountries(linewidth = 0.8)
Lon,Lat = np.meshgrid(lon[-180:180],lat[-90:90])
X,Y = map(Lon,Lat)
c = map.contourf(X,Y, temperature_need, cmap = plt.cm.RdBu_r)
d = plt.contour(X,Y, temperature_need, colors = 'black')
map.colorbar(c)
parallels = np.linspace(-90,90,5)
map.drawparallels(parallels,labels = [True,False,False,False])
meridians = np.linspace(-180,180,5)
map.drawmeridians(meridians,labels = [False,False,False,True])
plt.title(r'sst_jja[0]',fontsize=22)
plt.show()
然后出图结果:
求助 2019-09-19 2.jpg
我找了很多地方没有找到对症的方法解决这个问题,这才发出来求助。
第一次发帖我也不太懂,希望请教一下大家,十分感谢!


求助 2019-09-19 2.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-9-19 12:07:54 | 显示全部楼层
你在plt.contour里面设置一下你要画的等值线,比如np.arange(-2,40,2)
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-9-19 11:21:38 | 显示全部楼层
最后那幅大家忽略就好,我不知道在哪里删掉
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-19 15:10:04 | 显示全部楼层
好久不见 发表于 2019-9-19 12:07
你在plt.contour里面设置一下你要画的等值线,比如np.arange(-2,40,2)

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-9-19 15:56:28 | 显示全部楼层
好久不见 发表于 2019-9-19 12:07
你在plt.contour里面设置一下你要画的等值线,比如np.arange(-2,40,2)

太感谢您了,程序改好后能够正常出图了,我又改了些地方,出来一张冬季海温的图
sst_jja.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-22 21:40:45 | 显示全部楼层
好久不见 发表于 2019-9-19 12:07
你在plt.contour里面设置一下你要画的等值线,比如np.arange(-2,40,2)

稳呀~~!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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