def draw_graph(dates, counts): ########################################################### # Drawing takes place here. pylab.figure(1) ax = pylab.subplot(111) pylab.plot_date(dates, counts, color='r', linestyle='-', marker='o', markersize=3) ax.xaxis.set_major_formatter(pylab.DateFormatter('%Y')) ax.xaxis.set_major_locator(pylab.YearLocator()) ax.xaxis.set_minor_locator(pylab.MonthLocator()) ax.set_xlim((dates[0] - 92, dates[len(dates) - 1] + 92)) ax.yaxis.set_major_formatter(pylab.FormatStrFormatter('%d')) pylab.ylabel('Total # of Public DAV Servers') lastdate = datetime.datetime.fromordinal(dates[len(dates) - 1]).strftime("%B %Y") pylab.xlabel("Data as of " + lastdate) pylab.title('Security Space Survey of\nPublic Subversion DAV Servers') # End drawing ########################################################### png = open(OUTPUT_FILE, 'w') pylab.savefig(png) png.close() os.rename(OUTPUT_FILE, OUTPUT_FILE + ".tmp.png") try: im = Image.open(OUTPUT_FILE + ".tmp.png", 'r') (width, height) = im.size print("Original size: %d x %d pixels" % (width, height)) scale = float(OUTPUT_IMAGE_WIDTH) / float(width) width = OUTPUT_IMAGE_WIDTH height = int(float(height) * scale) print("Final size: %d x %d pixels" % (width, height)) im = im.resize((width, height), Image.ANTIALIAS) im.save(OUTPUT_FILE, im.format) os.unlink(OUTPUT_FILE + ".tmp.png") except Exception as e: sys.stderr.write("Error attempting to resize the graphic: %s\n" % (str(e))) os.rename(OUTPUT_FILE + ".tmp.png", OUTPUT_FILE) raise pylab.close()
def plot_rh(self, df_nsa_aotd, a): outs = [] returns = {} i = 0 for e, meas in enumerate(df_nsa_aotd.data): # test and skip bad quality values if meas.based_on_file_pops in self.inst_perform_pops.fname.values: qualtest = self.inst_perform_pops[self.inst_perform_pops.fname == meas.based_on_file_pops] if qualtest.quality.loc[0] == 'bad': print('bad quality measurement skiped ({})'.format( meas.based_on_file_pops)) continue # resample # if resample: # meas = meas.resample(datetime=resample).mean() colorbar = False values = meas.relative_humidity.to_pandas() values[values < 0] = np.nan values[values > 110] = np.nan a, lc, cm = plt_tools.plot.plot_gradiant_color( meas.time.values + np.timedelta64(self.timezone, 'h'), meas.altitude.values, values, ax=a, colorbar=colorbar) out = dict(lc=lc, cm=cm) out['mean'] = float(meas.relative_humidity.median().values) out['std'] = float(meas.relative_humidity.std().values) out['cmax'] = meas.relative_humidity.max() out['cmin'] = meas.relative_humidity.min( ) # out['mean'] - (2 * out['std']) # print(out['cmin']) out['alt_max'] = meas.altitude.max() outs.append(out) i += 1 cmax = max([out['cmax'] for out in outs]) cmin = min([out['cmin'] for out in outs]) returns['clim'] = (cmin, cmax) lcs = [out['lc'] for out in outs] # returns['zobjects'] = lcs a.zobjects = lcs for lc in lcs: lc.set_clim(cmin, cmax) lc.set_cmap(self.cm_meins) lc.set_linewidth(self.lw_pgc) a.set_ylim(-10, max([out['alt_max'] for out in outs]) * 1.2) a.xaxis.set_major_formatter(plt.DateFormatter("%H:%M:%S")) # a.set_xlabel('') f = a.get_figure() f.autofmt_xdate() a.set_ylabel('Altitude (m)') # colorbar cb, cax = plt_tools.colorbar.colorbar_axis_split_off(lc, a) cax.set_ylabel('RH (%)', labelpad=0.5) cb.locator = plt.MaxNLocator(5, prune='both') cb.update_ticks() a.cax = cax returns['a'] = a # returns['a'].cax.set_label('buba') return returns
def plot_pops_NC(self, df_nsa_aotd, a, resample='1min'): outs = [] returns = {} i = 0 for e, meas in enumerate(df_nsa_aotd.data): # test and skip bad quality values if meas.based_on_file_pops in self.inst_perform_pops.fname.values: qualtest = self.inst_perform_pops[self.inst_perform_pops.fname == meas.based_on_file_pops] if qualtest.quality.loc[0] == 'bad': self.send_message( 'bad quality measurement skiped ({})'.format( meas.based_on_file_pops)) continue # if resample: # meas = meas.resample(datetime=resample).mean() colorbar = False a, lc, cm = plt_tools.plot.plot_gradiant_color( meas.time.values + np.timedelta64(self.timezone, 'h'), meas.altitude.values, meas.pops_particle_number_concentration.values, ax=a, colorbar=colorbar) out = dict(lc=lc, cm=cm) out['mean'] = float( meas.pops_particle_number_concentration.median().values) out['std'] = float( meas.pops_particle_number_concentration.std().values) # out['cmax'] = out['mean'] + (1 * out['std']) # meast = meas.resample(datetime = '10min').mean() # trying to get rid of those plumes close to the ground meast = meas.copy(deep=True) meast.pops_particle_number_concentration[ meast.altitude < 20] = np.nan meast.pops_particle_number_concentration[np.isnan( meast.altitude)] = np.nan out['cmax'] = meast.pops_particle_number_concentration.max() out['cmin'] = meast.pops_particle_number_concentration.min() out['alt_max'] = meas.altitude.max() outs.append(out) i += 1 cmax = max([out['cmax'] for out in outs]) cmin = min([out['cmin'] for out in outs]) returns['clim'] = (cmin, cmax) lcs = [out['lc'] for out in outs] # returns['zobjects'] = lcs a.zobjects = lcs for lc in lcs: lc.set_clim(cmin, cmax) # lc.set_clim(0,25) lc.set_cmap(self.cm_meins) lc.set_linewidth(self.lw_pgc) a.set_ylim(-10, max([out['alt_max'] for out in outs]) * 1.2) a.xaxis.set_major_formatter(plt.DateFormatter("%H:%M:%S")) # a.set_xlabel('') f = a.get_figure() f.autofmt_xdate() a.set_ylabel('Altitude (m)') # colorbar cb, cax = plt_tools.colorbar.colorbar_axis_split_off(lc, a) # self.lc = lc # self.cb, self.cax = cb, cax a.cax = cax cb.locator = plt.MaxNLocator(5, prune='both') cb.update_ticks() cax.set_ylabel('NC$_{POPS}$ (#/cm$^3$)', labelpad=0.5) returns['a'] = a return returns