From 3df5748bd77c2de619b585a8849ba5341fd4a63a Mon Sep 17 00:00:00 2001 From: Eric Teunis de Boone Date: Tue, 7 Mar 2023 11:29:40 +0100 Subject: [PATCH] Long waiting commit --- figures/clocks/reference-clock.pdf | Bin 37773 -> 36802 bytes figures/clocks/src/reference-clock.py | 51 ++++++++++-------- .../2022-12-15_group_meeting/Makefile | 24 +++++++++ .../2022-12-15_group_meeting/config.mk | 1 + 4 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 presentations/2022-12-15_group_meeting/Makefile create mode 100644 presentations/2022-12-15_group_meeting/config.mk diff --git a/figures/clocks/reference-clock.pdf b/figures/clocks/reference-clock.pdf index 1016fd77a701f6f222a081587da9ed9fa79e3597..93bbe97ba5e4d971e5b4a409c464509d2a7ba4b3 100644 GIT binary patch delta 26768 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 t_edge) - upper = (t > t_edge + s_edge) + if divide_s_edge: + lower = (t > t_edge - s_edge/2) + upper = (t > t_edge + s_edge/2) + else: + lower = (t > t_edge) + upper = (t > t_edge + s_edge) + # merge dictionaries correctly line_kw = { **plot_kw, **line_kw } @@ -35,7 +40,6 @@ def plot_signal( ax, t, t_edge, s_edge, name=None, box_kw={'hatch': '/'}, line_k l2 = ax.plot(t, upper, **line_kw) # plot the shaded box of width t_sigma - l3 = ax.fill_between(t, upper, lower, **box_kw) # annotations @@ -45,12 +49,15 @@ def plot_signal( ax, t, t_edge, s_edge, name=None, box_kw={'hatch': '/'}, line_k y = 1 ax.annotate("$t_\mathrm{{{}}}$".format(name), xy=(t_edge, y), xytext=(t_edge-3, y), - va='top', ha='center' + va='bottom', ha='center' ) # annotate s_edge y = 0.3 - annotate_width(ax, "$\sigma_\mathrm{{{}}}$".format(name), t_edge, t_edge+s_edge, y) + if divide_s_edge: + annotate_width(ax, "$\sigma_\mathrm{{{}}}$".format(name), t_edge-s_edge/2, t_edge+s_edge/2, y) + else: + annotate_width(ax, "$\sigma_\mathrm{{{}}}$".format(name), t_edge, t_edge+s_edge, y) return [l, l2, l3] @@ -88,7 +95,7 @@ def annotate_width(ax, name, x1, x2, y, text_kw={}, arrow_kw={}): ## Main -def main(): +def main(ref=(10,5), A=(40,10), B=(70,12) ): """ Create a figure with two signals at times t1 and t2 (accuracy s1, s2) as compared to a reference timer tr (sr), with annotations. @@ -96,24 +103,21 @@ def main(): t = np.linspace(0, 100, 1e3) - t_A = 40 - t_B = 70 - t_ref = 10 - - s_A = 10 - s_B = 10 - s_ref = 5 + t_A, s_A = A + t_B, s_B = B + t_ref, s_ref = ref box_kw = { - "alpha": 0.3, + "alpha": 0.6, "hatch": '\\', } line_kw = { } vline_kw = { - "linestyle": '--', + "linestyle": (0,(4,2)), "color": "k", + "alpha":0.8, } fig, axs = plt.subplots(3,1,sharex=True, gridspec_kw={'hspace': 0}); @@ -122,10 +126,14 @@ def main(): axs[-1].set_xticks([]) axs[-1].set_xticklabels([]) for ax in axs: - ax.set_ylim(-0.2, 1.2) + ax.set_ylim(-0.25, 1.25) ax.set_yticks([]) ax.set_yticklabels([]) ax.grid() + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['bottom'].set_visible(False) + ax.spines['left'].set_visible(False) # Create the plots i = -1 @@ -133,20 +141,20 @@ def main(): # Signal A i+=1 y = 0.6 - axs[i].set_ylabel("Signal A") + axs[i].set_ylabel("Signal A", rotation=0) plot_diff_time(axs[i], "$t_\\mathrm{A}}$", t_ref, t_A, y, vline_kw=vline_kw) plot_signal(axs[i], t, t_A, s_A, name="A", box_kw=box_kw, line_kw=line_kw, annotate_t_edge=False) # Reference i+=1 - axs[i].set_ylabel("Reference") + axs[i].set_ylabel("Reference", rotation=0) axs[i].axvline(t_ref, **vline_kw) plot_signal(axs[i], t, t_ref, s_ref, name="ref", box_kw=box_kw, line_kw=line_kw, color='g') plot_diff_time(axs[i], "$t_\\mathrm{C}$", t_A, t_B, 0.3, vline_kw=vline_kw) # Signal B i+=1 - axs[i].set_ylabel("Signal B") + axs[i].set_ylabel("Signal B", rotation=0) plot_diff_time(axs[i], "$t_\\mathrm{B}}$", t_ref, t_B, y, vline_kw=vline_kw) plot_signal(axs[i], t, t_B, s_B, name="B", box_kw=box_kw, line_kw=line_kw, color='purple', annotate_t_edge=False) @@ -170,7 +178,8 @@ if __name__ == "__main__": fig, _ = main() if args.fname is not None: - plt.savefig(args.fname) + plt.tight_layout() + plt.savefig(args.fname, transparent=True) else: plt.show() diff --git a/presentations/2022-12-15_group_meeting/Makefile b/presentations/2022-12-15_group_meeting/Makefile new file mode 100644 index 0000000..449c34a --- /dev/null +++ b/presentations/2022-12-15_group_meeting/Makefile @@ -0,0 +1,24 @@ +# vim:ft=make +-include config.mk + +.PHONY: all clean dist-clean + +### Variables +MAIN_SRC ?= main.tex +TEXENGINE ?= latexmk --pdf + +MAIN_TARGET = $(patsubst %.tex,%.pdf,$(MAIN_SRC)) + +### Targets +all: $(MAIN_TARGET) + +dist: all clean + +$(MAIN_TARGET): $(MAIN_SRC) + $(TEXENGINE) $^ + +dist-clean: clean + @rm -vf *.pdf *.eps *.dvi *.ps + +clean: + @rm -vf *.dat *.log *.out *.aux *.nav *.snm *.toc *.vrb *~ *.fls *.fdb_latexmk *-blx.bib *.bbl *.blg *.run.xml diff --git a/presentations/2022-12-15_group_meeting/config.mk b/presentations/2022-12-15_group_meeting/config.mk new file mode 100644 index 0000000..fb559e2 --- /dev/null +++ b/presentations/2022-12-15_group_meeting/config.mk @@ -0,0 +1 @@ +MAIN_SRC=2022-12-15_CRHEP.tex