0

大家好,我正在使用 Ferret 来查看存储在 NetCDF 文件中的一些数据。但是,我只能根据所有测量值绘制数据:Ferret 绘制 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
...

这些文件中的每一个都有几年的时间数据,我希望能够在一年内查看(例如:表面温度),而不是让 Ferret 绘制它(yes? PLOT TS)绘制所有这些。建议我尝试使用 gnuplot 的原因。但是,它不能直接读取这些文件 (netCDF)。

向大家问好,请帮忙。

4

1 回答 1

1

如果您可以将这种格式的数据放入文本文件中,那么您就差不多完成了。虽然,日期格式01-JUN-1998有点特殊。但我猜从 gnuplot 5.0.3 开始,它可以作为输入读取。检查help time_specifiers。即使您的数据中有所有年份,只有在 gnuplot 中相应地设置 xrange 时,您才能将其限制为 1998 年。默认情况下,列分隔符是空格,因此您的数据值位于第 5 列。

数据: Data.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

结果:

在此处输入图像描述

于 2020-03-25T08:10:25.677 回答