plot.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/python
  2. from netCDF4 import Dataset
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. # Quick Python script to display time series
  6. # of some variable produced by perturbation
  7. #
  8. # Francois Massonnet
  9. # November 2016
  10. # francois.massonnet@bsc.es
  11. svar = 'qlw' # Variable to show
  12. year = 1993 # Year to show
  13. jy = 20 # y-coordinate of grid-point to show
  14. jx = 20 # x-
  15. repo = '/esarchive/releases/fg/ocean/DFS5.2' # where data is located
  16. nmemb=25 # Nb members to look for
  17. # ============
  18. # START SCRIPT
  19. # ============
  20. # Naming changes for two types of files (Asif decided so).
  21. fvar = svar
  22. if svar == 'qlw':
  23. fvar = 'radlw'
  24. if svar == 'qsw':
  25. fvar = 'radsw'
  26. fig = plt.figure(figsize = (10, 6))
  27. avg = 0
  28. javg = 1
  29. for m in np.arange(nmemb, -1, -1):
  30. print(str(m) + '/' + str(nmemb))
  31. filein = repo + '/' + svar + '_fc' + str(m).zfill(2) + '_DFS5.2_' + str(year) + '.nc'
  32. f = Dataset(filein, mode = 'r')
  33. var = f.variables[fvar][:, jy, jx]
  34. units = f.variables[fvar].units
  35. f.close()
  36. if m == 0:
  37. color = (0.2, 0.0, 0.0)
  38. lw = 2
  39. else:
  40. color = (0, 0.5, 0)
  41. lw = 1
  42. plt.plot(var, color = color, lw = lw)
  43. # Compute mean incrementally
  44. if m != 0:
  45. avg = avg + (var - avg) / javg
  46. javg = javg + 1
  47. # Mean
  48. plt.plot(avg, color = (0, 0.2, 0), lw = 2)
  49. plt.xlabel('time')
  50. plt.ylabel(units)
  51. plt.title(fvar + ' ' + str(year) + ' ' + 'jy = ' + str(jy) + '; jx = ' + str(jx))
  52. fig.savefig('fig.png', dpi = 300)
  53. plt.close("all")