access_UtilsWG_UtilWgDocs_NWP_Plotting_um_vn1.0.0 - ACCESS-NRI/accessdev-Trac-archive GitHub Wiki
NWP Plotting User Manual
Wenming LU
Created 05 April 2017 based on NWP_PLOT vn1.0.0
PageOutline(2-8,Contents,inline,unnumbered)
Introduction
NWP_PLOT 1.0.0 is a python/matplotlib/iris app in which nwp_plot.py plots UM data in pp, grib2 and netCDF format. NWP_PLOT produces ten standard plots: mslp_Precip, mslp_Thik, screen_Dewpoint, Screen_Temperature, Screen_Relative_Humidity, 10m_Wind, 200/500/700/850hPa Temperature, Relative_Humidity and HtWind, and 200/500/700/850/900hPa wind. Sample plots can be viewed at https://accessdev.nci.org.au/~wml548/charts/aps2/nwp/.
NWP_PLOT anyplot.py plots any field in a pp, grib2 or netCDF file and also is able to plot the difference of a field between two files for the same region (The two forecasts share the same spatial resolution).
NWP_PLOT Module
This application NWP_PLOT 1.0.0 or 1.1.0 is provided as a module at raijin:/projects/access/modules. To load the module,
module use /projects/access/modules
module load nwp_plot/1.0.0 #or module load nwp_plot/1.1.0 for APS3 plotting
NWP_PLOT Arguments in Details
After load the module, run nwppot.py
wml548@raijin4 ~]$nwpplot.py --help
usage: nwpplot.py [-h] --plot PLOT --model MODEL [--range RANGE]
[--perspective PERSPECTIVE] [--template TEMPLATE]
[--plotsetting PLOTSETTING] [--inputsfc INPUTS]
[--inputpres INPUTP] [--inputrain INPUTR] [--output OUTPUT]
[--date YYYYMMDD] [--time HH] [--step STEP]
[--levtype LEVTYPE] [--levelist LEVELIST]
[--raingap RAINGAP] [-v VERBOSE]
Plot NWP Charts
optional arguments:
-h, --help show this help message and exit
--plot PLOT plot type
--model MODEL NWP Model Name
--range RANGE Plotting Range
--perspective PERSPECTIVE
Plot Perspective
--template TEMPLATE Common Plot Settings
--plotsetting PLOTSETTING
User Plot Settings
--inputsfc INPUTS NWP Surface Data File
--inputpres INPUTP NWP Pressure Level Data File
--inputrain INPUTR NWP Rainfall Data file
--output OUTPUT Plotted Chart Name
--date YYYYMMDD FCST Base Date
--time HH FCST Run Time
--step STEP Dataset Step
--levtype LEVTYPE Dataset Level Type
--levelist LEVELIST Pressure Level
--raingap RAINGAP Precipitaion Interval
-v VERBOSE, --verbose VERBOSE
Print Out Data & Chart Details
The following table explains all switches in details,
| SWITCH | ** DESCRIPTION** | DETAILED EXPLANATION |
|---|---|---|
| -h, --help | show help message and exit | |
| --plot | plot type | must be provided; choices are mp, mt, temp, rh, dew, wind and ht |
| --model | NWP Model Name | msut be provided, such as ACCESS_C and ACCESS_G |
| --range | Plotting Range | full domain is plotted as default |
| --perspective | Plot Perspective | default NORMAL; can be POLAR as well |
| --template | Common Plot Settings | usual settings for certain nwp, e.g., city_1.5km for APS2 City models |
| --plotsetting | User Plot Settings | user personal settings for plotting |
| --inputsfc | NWP Surface Data File | sfc input data; needed for mp, dew, mt, screen level temp, rh and wind |
| --inputpres | NWP Pressure Level Data File | pres. lvl input data; needed for mt, ht and pre. level temp, rh and wind |
| --inputrain | NWP Rainfall Data file | second sfc input data for calculating rainfall |
| --output | Plotted Chart Name | PNG image name for the output |
| --date | FCST Base Date | forecast date |
| --time | FCST Run Time | forecast time |
| --step | Dataset Step | forecast hour to the forecast time |
| --levtype | Dataset Level Type | default sfc; can be pl for pres. level plotting |
| --levelist | Pressure Level | specific pressure level, e.g., 200 for 200hPa |
| --raingap | Precipitation Interval | time difference for precipitation, e.g., 1 for last 1 hour rainfall and 24 for 24 hours rainfall |
| -v VERBOSE, --verbose | Print Out Data & Chart Details |
run anyplot.py,
wml548@raijin4 ~]$anyplot.py -h
usage: anyplot.py [-h] [--plot PLOT] [--model MODEL] [--range RANGE]
[--perspective PERSPECTIVE] [--template TEMPLATE]
[--plotsetting PLOTSETTING] --input INPUT
[--inputcomp INPUTC] [--output OUTPUT] [--date YYYYMMDD]
[--time HH] [--step STEP] --field FIELD
[--cellmethod METHOD] [--levtype LEVTYPE]
[--levelist LEVELIST] [--unit UNIT] [--tick TICK]
[-v VERBOSE]
Plot NWP Charts
optional arguments:
-h, --help show this help message and exit
--plot PLOT plot type
--model MODEL NWP Model Name
--range RANGE Plotting Range
--perspective PERSPECTIVE
Plot Perspective
--template TEMPLATE Common Plot Settings
--plotsetting PLOTSETTING
User Plot Settings
--input INPUT NWP Data File
--inputcomp INPUTC NWP Data File For Comparison
--output OUTPUT Plotted Chart Name
--date YYYYMMDD FCST Base Date
--time HH FCST Run Time
--step STEP Dataset Step
--field FIELD Field For Plotting
--cellmethod METHOD Cell Method For Field
--levtype LEVTYPE Dataset Level Type
--levelist LEVELIST Pressure Level
--unit UNIT Field Unit For Plotting
--tick TICK Number Of Ticks For Field Plotting
-v VERBOSE, --verbose VERBOSE
Print Out Data & Chart Details
The following table explains all switches in details (those repeated in the first table will not be explained in details),
| SWITCH | ** DESCRIPTION** | DETAILED EXPLANATION |
|---|---|---|
| -h, --help | show help message and exit | |
| --plot | plot type | any or diff; default any |
| --model | NWP Model Name | default ACCESS |
| --range | Plotting Range | default the full domain of the field |
| --perspective | Plot Perspective | |
| --template | Common Plot Settings | |
| --plotsetting | User Plot Settings | |
| --input | NWP Surface Data File | must be provided |
| --inputcomp | NWP Pressure Level Data File | input data for comparison; must be available for diff |
| --output | Plotted Chart Name | |
| --date | FCST Base Date | |
| --time | FCST Run Time | |
| --step | Dataset Step | |
| --field | Field For Plotting | field to be plotted |
| --cellmethod | Cell Method For Field | cell method for the field; can be instantaneous, max, min and mean |
| --levtype | Dataset Level Type | default sfc; can be ml for model level and pl for pressure level field |
| --levelist | Pressure/Model Level | level for ml or pl; 1,2,3... for ml and 200, 300... (hPa) for pl |
| --unit | Field Unit For Plotting | unit for plotting; e.g., for temp, using celsius in stead of kelvin |
| --tick | Number Of Ticks For Field Plotting | number of ticks of the bar in the chart |
| -v VERBOSE, --verbose | Print Out Data & Chart Details |
run esmplot.py
wml548@raijin3 ~]$esmplot.py -h
usage: esmplot.py [-h] --plot PLOT --model MODEL --member MEMBER --threshold
THRESHOLD [--range RANGE] [--perspective PERSPECTIVE]
[--template TEMPLATE] [--plotsetting PLOTSETTING]
[--inputpath INPUT] [--inputsfc INPUTS] [--inputpres INPUTP]
[--inputrain INPUTR] [--output OUTPUT] [--date YYYYMMDD]
[--time HH] [--step STEP] [--levtype LEVTYPE]
[--levelist LEVELIST] [--raingap RAINGAP] [-v VERBOSE]
Plot Ensemble Charts
optional arguments:
-h, --help show this help message and exit
--plot PLOT plot type
--model MODEL Model Name
--member MEMBER List of Members
--threshold THRESHOLD
Threshold
--range RANGE Plotting Range
--perspective PERSPECTIVE
Plot Perspective
--template TEMPLATE Common Plot Settings
--plotsetting PLOTSETTING
User Plot Settings
--inputpath INPUT Data File Path
--inputsfc INPUTS Surface Data File
--inputpres INPUTP Pressure Level Data File
--inputrain INPUTR Rainfall Data file
--output OUTPUT Plotted Chart Name
--date YYYYMMDD FCST Base Date
--time HH FCST Run Time
--step STEP Dataset Step
--levtype LEVTYPE Dataset Level Type
--levelist LEVELIST Pressure Level
--raingap RAINGAP Precipitation Interval
-v VERBOSE, --verbose VERBOSE
Print Out Data & Chart Details
The following table explains all switches in details (those repeated in the first table will not be explained in details),
| SWITCH | ** DESCRIPTION** | DETAILED EXPLANATION |
|---|---|---|
| -h, --help | show help message and exit | |
| --plot | plot type | pow for wind, pop for rainfall, pot for temp |
| --model | NWP Model Name | default ACCESS |
| --member | Ensemble Members | total list of all members |
| --threshold | Threshold for Prob Plotting | e.g., 40 for temperature or 5 for 24 hour rainfall |
| --range | Plotting Range | default the full domain of the field |
| --perspective | Plot Perspective | |
| --template | Common Plot Settings | |
| --plotsetting | User Plot Settings | |
| --inputpath | Data File Path | must be provided; path to where all members are located |
| --inputsfc | NWP Surface Data File | only file name, not full path; |
| --inputpres | NWP Pressure Level Data File | only file name, not full path; pow at 250hPa only |
| --inputrain | NWP rainfall data | only file name, not full path; pop only |
| --output | Plotted Chart Name | |
| --date | FCST Base Date | |
| --time | FCST Run Time | |
| --step | Dataset Step | |
| --levtype | Dataset Level Type | default sfc; can be pl for pressure level field |
| --levelist | Pressure Level | default=250 (standard plots, pow is at sfc and 250hPa) |
| --raingap | Precipitation Interval | default=24 (for standard plots, we are only interested in probability of rainfall in 24 hours) |
| -v VERBOSE, --verbose | Print Out Data & Chart Details |
NWP_PLOT Howto
At raijin:/short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst, there are some sample data for plotting,
qwxbjva_pa033_2016082318_utc_fc.um #ACCESS_G sfc data
qwxbnka_pa037_2017032000_utc_fc.um #ACCESS_R sfc data
xbnmya_pa006 #ACCESS_C SY sfc data
xbnmya_pa007 #ACCESS_C SY sfc data; for 1 hour rainfall plotting
xbnmya_pa030 #ACCESS_C SY sfc data; for 24 hour rainfall plotting
xbnmya_pc006 #ACCESS_C SY pres. lvl data
xbnmya_pe006 #ACCESS_C SY model lvl data
access_c3 #APS3 ACCESS_C data for one run
access_ce3 #APS3 ACCESS-CE data for one run
We will show how to do the plots using nwpplot.py, anyplot.py and esmplot.py.
nwpplot.py
plot ACCESS_G sfc temp
nwpplot.py \
--plot temp \
--model ACCESS_G \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/qwxbjva_pa033_2016082318_utc_fc.um \
--output ACCESS-G_temp_sfc.png \
--template global
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-G_temp_sfc.png
plot ACCESS_G sfc temp for only Australia domain
Note: --range "-50 0 90 180" is added and the --template updated as region
nwpplot.py \
--plot temp \
--model ACCESS_G \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/qwxbjva_pa033_2016082318_utc_fc.um \
--output ACCESS-G_temp_sfc_australia.png \
--range "-50 0 90 180" \
--template region
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-G_temp_sfc_australia.png
plot ACCESS_G sfc temp for South Hemisphere with POLAR perspective --perspective
Note: changes in --range, --template and new
nwpplot.py \
--plot temp \
--model ACCESS_G \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/qwxbjva_pa033_2016082318_utc_fc.um \
--output ACCESS-G_temp_sfc_south_hemispere.png \
--range "-90 90 0 360" \
--template polar \
--perspective "POLAR"
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-G_temp_sfc_south_hemispere.png
For other sfc plots and all sfc plots for ACCESS_R and ACCESS_C, please refer to raijin:/projects/access/apps/nwp_plot/1.0.0/nwpplot_raijin_test.ksh.
plot ACCESS_C SY mslp-precip last 1 hour
nwpplot.py \
--plot mp \
--model ACCESS_C(SY) \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa007 \
--inputrain /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa006 \
--output ACCESS-C(SY)_mslpprecip_sfc.png \
--raingap 1 \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-C(SY)_mslpprecip_sfc.png
plot ACCESS_C SY mslp-precip last 24 hour
nwpplot.py \
--plot mp \
--model ACCESS_C(SY) \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa030 \
--inputrain /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa006 \
--output ACCESS-C(SY)_mslpprecip24_sfc.png \
--raingap 24 \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-C(SY)_mslpprecip24_sfc.png
plot ACCESS_C SY mslp-thik
nwpplot.py \
--plot mt \
--model ACCESS_C(SY) \
--inputpres /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pc006 \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa006 \
--output ACCESS-C(SY)_mslpthik_pl.png \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-C(SY)_mslpthik_pl.png
plot ACCESS_C SY pres. lvl relative humidity
nwpplot.py \
--plot rh \
--model 'ACCESS_C(SY)' \
--inputpres /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pc006 \
--inputsfc /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa006 \
--output ACCESS-C(SY)_rh_pl_850hPa.png \
--template city1_5km \
--levtype pl \
--levelist 850
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/ACCESS-C(SY)_rh_pl_850hPa.png
Other pres. level plots can be produced by just chnaging --plot to temp, wind or ht. You may also change the --levelist to 200, 500 or 700 to get the plots at different pres. level.
NOTE: nwpplot.py has no functional differences in vn 1.0.0 and vn1.1.0. However, nwpplot.py in vn1.0.0 works for APS2 data using BOM STASH and nwpplot.py in vn1.1.0 works for APS3 data using BOM APS3 STASH.
anyplot.py
plot air_temperature from qwxbjva_pa033_2016082318_utc_fc.um
anyplot.py \
--input /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/qwxbjva_pa033_2016082318_utc_fc.um \
--field 'air_temperature' \
--unit 'celsius' \ #convert temp to celsius whatever
--output anyplot_g_sfctemp.png \
--tick 40 \ #40 ticks for the bar in the chart
--template global
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/anyplot_g_sfctemp.png
plot 300hPa air_temperature from xbnmya_pc006
anyplot.py \
--input /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pc006 \
--field 'air_temperature' \
--unit 'celsius' \
--output anyplot_c_temp_pl.png \
--tick 40 \
--levtype pl \
--levelist 300 \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/anyplot_c_temp_pl.png
plot ml lvl 30 air_temperature from xbnmya_pe006
anyplot.py \
--input /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pe006 \
--field 'air_temperature' \
--unit 'celsius' \
--outputanyplot_c_temp_ml.png \
--tick 40 \
--levtype ml \
--levelist 30 \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/anyplot_c_temp_ml.png
plot air_temperature difference between xbnmya_pa006 & xbnmya_pa007
anyplot.py \
--input /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa006 \
--inputc input/short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/xbnmya_pa007 \
--field 'air_temperature' \
--unit 'celsius' \
--output anyplot_diff_temp.png \
--tick 40 \
--plot 'diff' \
--template city1_5km
OUTPUT: /short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/plot/anyplot_diff_temp.png
esmplot.py
esmplot.py as EnSeMble plot does the probabilty plotting for ensemble forecasts. One example,
MODEL=ACCESS_CE
DATADIR=/short/dp9/aps_test_data/util_accessdev/nwp_plot/1.0.0/fcst/access_ce3/20160621T0900Z/SY/
MEMBER='enuk_um_000 enuk_um_012 enuk_um_013 enuk_um_014 enuk_um_015 enuk_um_016 enuk_um_017 enuk_um_018 enuk_um_019 enuk_um_020 enuk_um_021 enuk_um_022'
esmplot.py --plot pop \
--model $MODEL \
--inputpath $DATADIR \
--inputsfc enukaa_20160621T09_spec_037 \
--output myprcp.png \
--member "$MEMBER" \
--threshold 5.0 \
--template city1_5km \
--inputrain enukaa_20160621T09_spec_013 \
--date 20160621 \
--time 09 \
--step 37
This produces the plot of probability of 24 hour rainfall at 37 hour > 5mm.
or you may run
esmplot_raijin_test.ksh
Any 4 PNG will be produced in the current folder,
myprcp.png mytemp.png mypwind.png mywind.png
Please refer to esmplot_raijin_test.ksh on how to plot all probability charts, pop, pot, pow at sfc and 250hPa.
Plot Suite
There is a Rose/cylc suite that plots all pp files and produce the plots to a designated location. The suite ID is u-al095.
The suite is tested on ACCESS_C SY. Since there is no common structure in which the pp files are organised, the rose-suite.conf needs to be modified for ACCESS_G and other NWP suites.
Another suite u-al586 does the exactly the same job. In stead of all the task related variables being defined in suite.rc, each task has a corresponding rose-app.conf in the folder app. All the relevant variables are specified in this rose-app.conf. In addition, the script= rose task run -v is defined in suite.rc. Please note there is no improvement by this design, it is just another style.
There are suites developed for APS3 NWP systems,
- u-am854: for APS3 City (1.5km), BOM STASH pp files; sample plots at https://accessdev.nci.org.au/~wml548/charts/aps3/nwp/
- u-am898: for APS3 City Ensemble (2.2km), BOM STASH ppfiles; sample plots at https://accessdev.nci.org.au/~wml548/charts/aps3/ensemble/