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()
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'))
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)