Plot NetCDF文件的数据提取和转换

Plot NetCDF文件的数据提取和转换,plot,type-conversion,gnuplot,netcdf,ferret,Plot,Type Conversion,Gnuplot,Netcdf,Ferret,嘿,伙计们,我使用雪貂来查看存储在NetCDF文件中的一些数据。 然而,我只能绘制所有测量值的数据:雪貂绘制1998年至2004年的数据。因为我不能专注于一年的时间;但是,Ferret不允许我调整轴范围,所以我现在想尝试将数据点提取到.txt或.dat文件中,以便使用GNUPlot查看它们。 以下是文件中存储的数据: yes? show dat '''currently SET data sets: 1> ./CrawfordPoint_surface.nc (default)

嘿,伙计们,我使用雪貂来查看存储在NetCDF文件中的一些数据。 然而,我只能绘制所有测量值的数据:雪貂绘制1998年至2004年的数据。因为我不能专注于一年的时间;但是,Ferret不允许我调整轴范围,所以我现在想尝试将数据点提取到.txt或.dat文件中,以便使用GNUPlot查看它们。 以下是文件中存储的数据:

yes? show dat
'''currently SET data sets:
    1> ./CrawfordPoint_surface.nc  (default)
 name     title                             I         J         K         L
 T_2M     Air temperature at 2 m           ...       ...       ...       1:105193
 T_2M_O   Origin of air temperature data   ...       ...       ...       1:105193
 RH_2M    Relative humidity at 2 m         ...       ...       ...       1:105193
 RH_2M_O  Origin of relative humidity dat  ...       ...       ...       1:105193
 WS_10M   Wind speed at 10 m               ...       ...       ...       1:105193
 WS_10M_O Origin of wind speed data        ...       ...       ...       1:105193
 P        Snowfall rate                    ...       ...       ...       1:105193
 P_O      Origin of snowfall rate          ...       ...       ...       1:105193
 SRIN     Downward shortwave radiation     ...       ...       ...       1:105193
 SRIN_O   Origin of downward shortwave ra  ...       ...       ...       1:105193
 SROUT    Upward shortwave radiation       ...       ...       ...       1:105193
 SROUT_O  Origin of the upward shortwave   ...       ...       ...       1:105193
 LRIN     Downward longwave radiation      ...       ...       ...       1:105193
 LROUT    Upward longwave radiation        ...       ...       ...       1:105193
 SHF      Sensible heat flux               ...       ...       ...       1:105193
 LHF      Latent heat flux                 ...       ...       ...       1:105193
 G        Subsurface heat flux             ...       ...       ...       1:105193
 TS       Surface temperature              ...       ...       ...       1:105193
 MELT     Melt rate                        ...       ...       ...       1:105193
我可以通过让Ferret列出数据集来单独查看数据集:

yes? list TS
             VARIABLE : Surface temperature (K)
             FILENAME : CrawfordPoint_surface.nc
             SUBSET   : 105193 points (TIME)
 01-JUN-1998 00:00:00 /      1:  265.2
 01-JUN-1998 01:00:00 /      2:  264.4
 01-JUN-1998 01:59:59 /      3:  263.7
 01-JUN-1998 03:00:00 /      4:  263.1
...
这些文件中的每一个都有几年的时间数据,我希望能够在一年内查看(比如:表面温度),而不是让雪貂绘制所有这些数据(
yes?plot TS
)。建议我尝试使用gnuplot的原因。但是,它无法直接读取这些文件(netCDF)


向大家问好,请帮助。

如果您能将这种格式的数据保存到文本文件中,那么您的工作就快完成了。 尽管如此,日期格式1998年6月1日有点特殊。但我想,由于gnuplot5.0.3,它可以作为输入读取。检查
帮助时间\u说明符
。 即使您的数据中有所有年份,您也只需在gnuplot中相应地设置xrange,就可以将其限制在1998年。默认情况下,列分隔符是空白,因此数据值位于第5列

数据:
数据.dat

             VARIABLE : Surface temperature (K)
             FILENAME : CrawfordPoint_surface.nc
             SUBSET   : 105193 points (TIME)
 01-JUN-1998 00:00:00 /      1:  265.2
 01-JUN-1998 01:00:00 /      2:  264.4
 01-JUN-1998 01:59:59 /      3:  263.7
 01-JUN-1998 03:00:00 /      4:  263.1
 03-JUN-1998 00:00:00 /      4:  260.0
代码:

### print time data with abbreviated month
reset session

myTimeFmt = "%d-%b-%Y %H:%M:%S"
set format x "%d-%b" time

set xrange [strptime(myTimeFmt,"01-JUN-1998"):strptime(myTimeFmt,"03-JUN-1998")]
set style line 1 pt 7 lc rgb "red"

plot 'Data.dat' u (timecolumn(1,myTimeFmt)):5 w lp ls 1 ti "Surface temperature (K)"
### end of code
结果:

### print time data with abbreviated month
reset session

myTimeFmt = "%d-%b-%Y %H:%M:%S"
set format x "%d-%b" time

set xrange [strptime(myTimeFmt,"01-JUN-1998"):strptime(myTimeFmt,"03-JUN-1998")]
set style line 1 pt 7 lc rgb "red"

plot 'Data.dat' u (timecolumn(1,myTimeFmt)):5 w lp ls 1 ti "Surface temperature (K)"
### end of code

请发布一段数据片段。嘿,刚刚编辑了问题。我希望现在更清楚了!对不起,这个问题还不清楚。列I、J和K中的点只是占位符?列L具有所有相同的值?我看不到任何日期或年份。这里没有什么阴谋。是否要在一行中绘制所有值?文件似乎有一些非常特殊的内部格式(,)。Gnuplot可以绘制二进制文件(),但需要知道格式、字节偏移量等。在ferret中是否有任何命令可以进行导出,或者我应该列出数据,并将其复制粘贴到.txt或.dat文件中?在我要求ferret在屏幕上显示数据后,我是否只复制并粘贴所有数据?或者如何让FERRET保存netCDF文件的文本文件?我不知道FERRET是否有将数据保存为文件的选项。但是如果你能在屏幕上列出数据,那么你必须把数据复制并保存到一个文件中。是的,这很有意义,只是想确定一下。非常感谢。