Exemplo n.º 1
0
def plotHans(dataDate: DataDate, near_detectors: Dict, size: int,
             start_time: dt.time, end_time: dt.time) -> None:

    fig = plt.figure(figsize=(10, 10))
    fig.suptitle(dataDate.date.strftime('%y%m%d'), fontsize=20)
    gs = fig.add_gridspec(size,
                          size,
                          left=0.12,
                          right=0.93,
                          top=0.93,
                          bottom=0.05,
                          wspace=0.2,
                          hspace=0.07)

    anno_opts = dict(xy=(0.5, 0.9),
                     xycoords='axes fraction',
                     va='center',
                     ha='center')

    start_time = dt.datetime.combine(dataDate.date, start_time.time())
    end_time = dt.datetime.combine(dataDate.date, end_time.time())

    for n in range(size):
        for m in range(size):

            data = getDataForOneD(dataDate, near_detectors[n, m], start_time,
                                  end_time)

            ax = fig.add_subplot(gs[n, m])

            ax.set_xlim([start_time, end_time])
            ax.set_ylim([723, 745])

            if m != 0:
                ax.set_yticks([])
            if n != size - 1:
                ax.set_xticks([])

            ax.annotate(near_detectors[n, m], **anno_opts)
            ax.plot(data[0], data[1], lw=1, c='green')

    plt.show()
Exemplo n.º 2
0
def plotOneD(times_x: List[dt.datetime],
             level0_y: List[float],
             tempature_y: List[float],
             level0_errors: List[float],
             marked_time: dt.time = None) -> None:

    if not times_x:
        print('No times specified!')
        return

    fig = plt.figure(figsize=(6, 10))
    fig.suptitle(times_x[0].date(), fontsize=20)
    gs = fig.add_gridspec(2,
                          1,
                          left=0.12,
                          right=0.93,
                          top=0.93,
                          bottom=0.05,
                          wspace=0.2,
                          hspace=0.07)

    Lv0ax = fig.add_subplot(gs[0, 0])
    Lv0ax.errorbar(times_x,
                   level0_y,
                   yerr=level0_errors,
                   capsize=2,
                   elinewidth=1)

    Tempax = fig.add_subplot(gs[1, 0])
    Tempax.plot(times_x, tempature_y)

    if marked_time:
        marked_datetime = dt.datetime.combine(times_x[0].date(),
                                              marked_time.time())

        Lv0ax.plot([marked_datetime, marked_datetime], [0, 1000])
        Lv0ax.set_ylim([min(level0_y) - 3, max(level0_y) + 3])

        Tempax.plot([marked_datetime, marked_datetime], [0, 1000])
        Tempax.set_ylim([min(tempature_y) - 3, max(tempature_y) + 3])

    # Plot parameters to look nicer
    Tempax.xaxis.set_major_formatter(mpl.dates.DateFormatter('%H:%M'))

    Lv0ax.set_xticklabels([])
    Lv0ax.grid()
    Tempax.grid()

    Lv0ax.set_ylabel('Level 0 Rate (Hz)')
    Tempax.set_ylabel('Tempature (C)')
    Tempax.set_xlabel('Time (UTC)')

    Lv0ax.set_xlim([times_x[0], times_x[-1]])
    Tempax.set_xlim([times_x[0], times_x[-1]])

    plt.show()

    save_movie = input('Save this plot? (Y/n): ')
    answers = ['Y', 'y', 'N', 'n']
    while save_movie not in answers:
        save_movie = input('Invalid response (Y/N): ')

    if save_movie == 'Y' or save_movie == 'y':
        start_time = times_x[0].strftime('%H-%M-%S')
        end_time = times_x[-1].strftime('%H-%M-%S')

        save_path = Path(__file__).resolve(
        ).parents[2] / 'Plots/OneD' / f'{times_x[0].date()}'
        if not save_path.is_dir():
            Path.mkdir(save_path)

        fig.savefig(Path(save_path / f'{start_time}_{end_time}.png'))
Exemplo n.º 3
0
def construct_key(k_date: dt.date, k_time: dt.time, detector_number: str) -> KeyLv0:
    event_datetime = dt.datetime.combine(k_date.date(), k_time.time())
    return KeyLv0(event_datetime, detector_number)