ttsshow.py - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch) (HTM) git clone git://src.adamsgaard.dk/pism (DIR) Log (DIR) Files (DIR) Refs (DIR) LICENSE --- ttsshow.py (2459B) --- 1 #!/usr/bin/env python3 2 3 """ 4 Creates graph of modeled time series from multiple files. See figures 5 in the "Getting Started" section of the User's Manual. 6 """ 7 8 # example from grid-sequencing example: 9 # $ ./tsshow.py ice_volume_glacierized ice_volume_glacierized-gridseq.png ts_g20km_10ka_hy.nc '20 km for 10 ka' ts_g10km_gridseq.nc '10 km for 2 ka' ts_g5km_gridseq.nc '5 km for 200 a' 10 # example from paramstudy/: 11 # $ ../tsshow.py ice_volume_glacierized ice_volume_glacierized-param.png ts_p10km_q0.1_e1.nc '(0.1,1)' ts_p10km_q0.5_e1.nc '(0.5,1)' ts_p10km_q1.0_e1.nc '(1.0,1)' ts_p10km_q0.1_e3.nc '(0.1,3)' ts_p10km_q0.5_e3.nc '(0.5,3)' ts_p10km_q1.0_e3.nc '(1.0,3)' ts_p10km_q0.1_e6.nc '(0.1,6)' ts_p10km_q0.5_e6.nc '(0.5,6)' ts_p10km_q1.0_e6.nc '(1.0,6)' 12 13 from numpy import * 14 import pylab as plt 15 import sys 16 try: 17 import netCDF4 as netCDF 18 except: 19 print("netCDF4 is not installed!") 20 sys.exit(1) 21 22 NC = netCDF.Dataset 23 24 if len(sys.argv) < 5: 25 print("tsshow.py ERROR: at least 4 arguments needed") 26 print("usage:") 27 print() 28 print(" $ python tsshow.py FIELD OUTIMAGE TSFILE1 LABEL1 ... TSFILEn LABELn") 29 print() 30 print("where strings LABEL1 ... LABELn go in the legend") 31 print("example:") 32 print(" $ python tsshow.py ice_volume_glacierized foo.png ts_g20km.nc '20 km' ts_g10km.nc '10 km'") 33 sys.exit(1) 34 35 field = sys.argv[1] 36 outimage = sys.argv[2] 37 38 legloc = 'lower right' 39 40 secpera = 31556926.0 41 vfactor = 1.0e6 * 1.0e9 42 43 n = (len(sys.argv) - 3) / 2 44 labels = [] 45 plt.figure(figsize=(9, 4)) 46 47 style = ['b-', 'g-', 'r-', 'c-', 'm-', 'y-', 'k-', 48 'b--', 'g--', 'r--', 'c--', 'm--', 'y--', 'k--'] 49 for k in range(n): 50 51 tsfile = sys.argv[2 * k + 3] 52 labels.append(sys.argv[2 * k + 4]) 53 54 try: 55 ncfile = NC(tsfile, "r") 56 except: 57 print("ERROR: can't read from file %s ..." % tsfile) 58 sys.exit(2) 59 t = ncfile.variables["time"][:] / secpera 60 var = ncfile.variables[field][:] 61 ncfile.close() 62 print("read variable '%s' from time-series file '%s' ..." % (field, tsfile)) 63 64 plt.plot(t, var / vfactor, style[k], linewidth=2.5) # automatic colors; default order 65 # blue, green, red, cyan, magenta, ... 66 plt.hold(True) 67 68 plt.hold(False) 69 plt.legend(labels, loc=legloc) 70 plt.xlabel("t (years)", size=16) 71 plt.ylabel("%s ($10^6$ km$^3$)" % field, size=16) 72 plt.grid(True) 73 print("saving image to file '%s' ..." % outimage) 74 # plt.show() 75 plt.savefig(outimage, bbox_inches='tight')