【问题标题】:Python plotting data (profiles)Python 绘图数据(配置文件)
【发布时间】:2018-02-24 01:34:27
【问题描述】:

我的物理项目有问题,即使我不知道如何编程,我也必须使用 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()

得到了这个:

【问题讨论】:

    标签: python matplotlib plot netcdf netcdf4


    【解决方案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)
    

    【讨论】:

    • 如果可以,我会拥抱你。
    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多