Python绘图数据(配置文件)

时间:2017-09-14 23:49:25

标签: python matplotlib plot netcdf netcdf4

我的物理项目有问题,我必须使用Python netCDF4,即使我不知道如何编程。我已经阅读了我的数据,我看过很多不同的教程,我不知道下一步该做什么。我很长时间都在努力。

from netCDF4 import Dataset as ncf
file='atmPrf_C001.2010.227.00.03.G04_2013.3520_nc'
data=ncf(file,'r’)
print(infile.dimensions)
print(data.variables)

vertical=data.variables['MSL_alt']
latitude=data.variables['Lat']
longitude=data.variables['Lon']
ang=data.variables['Bend_ang']

输出:

OrderedDict([(u'Lat', <type 'netCDF4._netCDF4.Variable'>
float32 Lat(MSL_alt)
    units: deg
    valid_range: [-90.  90.]
    _FillValue: -999.0
    long_name: Latitude of perigee point
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Lon', <type 'netCDF4._netCDF4.Variable'>
float32 Lon(MSL_alt)
    units: deg
    valid_range: [-180.  180.]
    _FillValue: -999.0
    long_name: Longitude of perigee point
unlimited dimensions:
current shape = (2849,)
filling off
), (u'MSL_alt', <type 'netCDF4._netCDF4.Variable'>
float32 MSL_alt(MSL_alt)
    units: km
    valid_range: [   0.  999.]
    _FillValue: -999.0
    long_name: Mean sea level altitude of perigee point
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Ref', <type 'netCDF4._netCDF4.Variable'>
float32 Ref(MSL_alt)
    units: N
    valid_range: [    0.  9999.]
    _FillValue: -999.0
    long_name: Refractivity
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Azim', <type 'netCDF4._netCDF4.Variable'>
float32 Azim(MSL_alt)
    units: deg
    valid_range: [    0.  1500.]
    _FillValue: -999.0
    long_name: Azimuth of occultation plane wrt North
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Pres', <type 'netCDF4._netCDF4.Variable'>
float32 Pres(MSL_alt)
    units: mb
    valid_range: [    0.  1500.]
    _FillValue: -999.0
    long_name: Dry pressure
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Temp', <type 'netCDF4._netCDF4.Variable'>
float32 Temp(MSL_alt)
    units: C
    valid_range: [-200.  100.]
    _FillValue: -999.0
    long_name: Dry temperature
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Bend_ang', <type 'netCDF4._netCDF4.Variable'>
float64 Bend_ang(MSL_alt)
    units: rad
    valid_range: [  0.  10.]
    _FillValue: -999.0
    long_name: Raw (unoptimized) bending angle
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Opt_bend_ang', <type 'netCDF4._netCDF4.Variable'>
float64 Opt_bend_ang(MSL_alt)
    units: rad
    valid_range: [  0.  10.]
    _FillValue: -999.0
    long_name: Optimized bending angle
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Impact_height', <type 'netCDF4._netCDF4.Variable'>
float32 Impact_height(MSL_alt)
    units: km
    valid_range: [   0.  999.]
    _FillValue: -999.0
    long_name: Impact height
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Bend_ang_stdv', <type 'netCDF4._netCDF4.Variable'>
float32 Bend_ang_stdv(MSL_alt)
    units: rad
    valid_range: [  0.  10.]
    _FillValue: -999.0
    long_name: Bending angle uncertainty
unlimited dimensions:
current shape = (2849,)
filling off
), (u'Bend_ang_conf', <type 'netCDF4._netCDF4.Variable'>
int32 Bend_ang_conf(MSL_alt)
    units: %
    valid_range: [  0 100]
    _FillValue: -999
    long_name: Bending angle confidence
unlimited dimensions:
current shape = (2849,)
filling off
), (u'OL_par', <type 'netCDF4._netCDF4.Variable'>
float64 OL_par(OL_par)
    _FillValue: -999.0
unlimited dimensions:
current shape = (20,)
filling off
), (u'OL_ipar', <type 'netCDF4._netCDF4.Variable'>
int32 OL_ipar(OL_par)
    _FillValue: -999
unlimited dimensions:
current shape = (20,)
filling off
), (u'OL_vec1', <type 'netCDF4._netCDF4.Variable'>
float64 OL_vec1(OL_vec)
    _FillValue: -999.0
unlimited dimensions:
current shape = (7949,)
filling off
), (u'OL_vec2', <type 'netCDF4._netCDF4.Variable'>
float64 OL_vec2(OL_vec)
    _FillValue: -999.0
unlimited dimensions:
current shape = (7949,)
filling off
), (u'OL_vec3', <type 'netCDF4._netCDF4.Variable'>
float64 OL_vec3(OL_vec)
    _FillValue: -999.0
unlimited dimensions:
current shape = (7949,)
filling off
), (u'OL_vec4', <type 'netCDF4._netCDF4.Variable'>
float64 OL_vec4(OL_vec)
    _FillValue: -999.0
unlimited dimensions:
current shape = (7949,)
filling off
)])

我不知道下一步该做什么,我能做的最后一件事就是宣布变量,我应该专注于弯曲角度,但我不会在这些数据中看到它,应该有多大是或者我应该知道声明尺寸?我正在请求某人提示,因为这个自愿科学项目已经让我发疯了。谢谢。

更新:我刚试图将其绘制成原始的:

plt.plot(ang)
plt.show()

并得到了这个:enter image description here

1 个答案:

答案 0 :(得分:1)

当您编写ang=data.variables['Bend_ang']时,会返回一个对象(NetCDF4变量),其中包含(除了数据之外)通常还有单位,维度,名称等内容,您可以访问:

ang_units = data.variables['Bend_ang'].units
ang_dims  = data.variables['Bend_ang'].dimensions

可以使用以下方法将数据本身读取到Numpy数组:

vertical_data = data.variables['MSL_alt'][:]
ang_data      = data.variables['Bend_ang'][:]

在您的情况下,这些将是一维数组,可以使用以下方式简单地绘制:

plt.plot(ang_data, vertical_data)