コード例 #1
0
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()
コード例 #2
0
ファイル: quicklooks.py プロジェクト: hagne/ASR_NSA_science
    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
コード例 #3
0
ファイル: quicklooks.py プロジェクト: hagne/ASR_NSA_science
    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