In [1]:
%run basics
import xlrd
import matplotlib.dates as mdates
%matplotlib


Using matplotlib backend: Qt4Agg

In [2]:
def xl_read_data(xl_sheet,datemode,header_row=1,units_row=0,dt_col=0,firstdata_row=2):
    header_list = [item for item in xl_sheet.row_values(header_row)]
    data = {}
    data["DateTime"] = {}
    dt_header = xl_sheet.cell_value(rowx=header_row,colx=dt_col)
    xlcol = header_list.index(dt_header)
    xl_dt = xl_sheet.col_values(xlcol)[firstdata_row:xl_sheet.nrows]
    data["DateTime"]["data"] = [xlrd.xldate.xldate_as_datetime(item,datemode) for item in xl_dt]
    header_list.remove(dt_header)
    for item in header_list:
        data[item] = {}
        xlcol = header_list.index(item)+1
        data[item]["data"] = numpy.array(xl_sheet.col_values(xlcol)[firstdata_row:xl_sheet.nrows],dtype=numpy.float64)
        data[item]["units"] = xl_sheet.cell_value(rowx=units_row,colx=xlcol)
    return data

In [35]:
site_name = "Gingin"
ofqc_name = "../../Sites/"+site_name+"/Data/Processed/all/"+site_name+"_L6_Summary.xls"
dingo_name = "../../Sites/"+site_name+"/Data/DINGO/V12a/"+site_name+"_L6_Summary.xls"
ofqc_wbk = xlrd.open_workbook(ofqc_name)
ofqc_monthly = ofqc_wbk.sheet_by_name("Monthly")
ofqc_data = xl_read_data(ofqc_monthly,ofqc_wbk.datemode)
dingo_wbk = xlrd.open_workbook(dingo_name)
dingo_monthly = dingo_wbk.sheet_by_name("Monthly")
dingo_data = xl_read_data(dingo_monthly,dingo_wbk.datemode)
dingo_data["GPP"]["data"] = -1*dingo_data["GPP"]["data"]
start_date = max([ofqc_data["DateTime"]["data"][0],dingo_data["DateTime"]["data"][0]])
end_date = min([ofqc_data["DateTime"]["data"][-1],dingo_data["DateTime"]["data"][-1]])
osi = ofqc_data["DateTime"]["data"].index(start_date)
oei = ofqc_data["DateTime"]["data"].index(end_date)
dsi = dingo_data["DateTime"]["data"].index(start_date)
dei = dingo_data["DateTime"]["data"].index(end_date)
ofqc_ET_sum = numpy.sum(ofqc_data["ET"]["data"][osi:oei])
dingo_ET_sum = numpy.sum(dingo_data["ET"]["data"][dsi:dei])
ofqc_NEE_sum = numpy.sum(ofqc_data["NEE_FFNET"]["data"][osi:oei])
dingo_NEE_sum = numpy.sum(dingo_data["NEE"]["data"][dsi:dei])
ofqc_Fre_sum = numpy.sum(ofqc_data["Fre_FFNET"]["data"][osi:oei])
dingo_Fre_sum = numpy.sum(dingo_data["Fre"]["data"][dsi:dei])
ofqc_GPP_sum = numpy.sum(ofqc_data["GPP_FFNET"]["data"][osi:oei])
dingo_GPP_sum = numpy.sum(dingo_data["GPP"]["data"][dsi:dei])
date_fmt = mdates.DateFormatter('%Y-%m')
ddt = dingo_data["DateTime"]["data"][dsi:dei]
odt = ofqc_data["DateTime"]["data"][osi:oei]
title_str = site_name+": "+start_date.strftime("%Y-%m-%d")+" to "
title_str = title_str+end_date.strftime("%Y-%m-%d")
fig,(ax1,ax2,ax3,ax4) = plt.subplots(4, sharex=True)
plt.figtext(0.5,0.95,title_str,horizontalalignment='center',fontsize=14)
ax1.plot(ddt,dingo_data["ET"]["data"][dsi:dei],'r^',label="DINGO")
ax1.plot(odt,ofqc_data["ET"]["data"][osi:oei],'bo',label="OzFluxQC")
ax1.set_ylabel("ET\n(mm)")
ax1.legend(loc="lower left",prop={'size':8})
ax1.text(1.012,0.6,"{0}".format(int(dingo_ET_sum)),color='r',horizontalalignment='left',transform=ax1.transAxes)
ax1.text(1.012,0.4,"{0}".format(int(ofqc_ET_sum)),color='b',horizontalalignment='left',transform=ax1.transAxes)
ax2.plot(ddt,dingo_data["NEE"]["data"][dsi:dei],'r^',label="DINGO")
ax2.plot(odt,ofqc_data["NEE_FFNET"]["data"][osi:oei],'bo',label="OzFluxQC")
ax2.set_ylabel("NEE\n(gC/m2)")
ax2.text(1.012,0.6,"{0}".format(int(dingo_NEE_sum)),color='r',horizontalalignment='left',transform=ax2.transAxes)
ax2.text(1.012,0.4,"{0}".format(int(ofqc_NEE_sum)),color='b',horizontalalignment='left',transform=ax2.transAxes)
ax3.plot(ddt,dingo_data["Fre"]["data"][dsi:dei],'r^',label="DINGO")
ax3.plot(odt,ofqc_data["Fre_FFNET"]["data"][osi:oei],'bo',label="OzFluxQC")
ax3.set_ylabel("Fre\n(gC/m2)")
ax3.text(1.012,0.6,"{0}".format(int(dingo_Fre_sum)),color='r',horizontalalignment='left',transform=ax3.transAxes)
ax3.text(1.012,0.4,"{0}".format(int(ofqc_Fre_sum)),color='b',horizontalalignment='left',transform=ax3.transAxes)
ax4.plot(ddt,dingo_data["GPP"]["data"][dsi:dei],'r^',label="DINGO")
ax4.plot(odt,ofqc_data["GPP_FFNET"]["data"][osi:oei],'bo',label="OzFluxQC")
ax4.set_ylabel("GPP\n(gC/m2)")
ax4.text(1.012,0.6,"{0}".format(int(dingo_GPP_sum)),color='r',horizontalalignment='left',transform=ax4.transAxes)
ax4.text(1.012,0.4,"{0}".format(int(ofqc_GPP_sum)),color='b',horizontalalignment='left',transform=ax4.transAxes)
ax4.xaxis.set_major_formatter(date_fmt)
fig.subplots_adjust(hspace=0,left=0.12,right=0.90)
plt.setp([a.get_xticklabels() for a in fig.axes[:-1]], visible=False)
plt.show()

In [ ]: