From 7ebd25b709709f7560ae53d40d1ee2ff04bc3fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gi=C3=B9=20Marcer?= Date: Sun, 7 Jun 2020 19:08:23 +0200 Subject: [PATCH] misc: make slides-plot.py usable by CLI --- ex-1/slides-plot.py | 132 ++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 42 deletions(-) diff --git a/ex-1/slides-plot.py b/ex-1/slides-plot.py index 299e23d..275b462 100755 --- a/ex-1/slides-plot.py +++ b/ex-1/slides-plot.py @@ -2,60 +2,108 @@ from matplotlib import pyplot as plt import numpy as np +import argparse import sys +# -i → agrs.show → open plot in interactive mode +# -s → args.save → save plot +# +# -n → agrs.note → do the Landau plot with the notes +# -b → args.both → do the Landau-Moyal plot + + def moyal(x, μ, σ): N = (1)/(np.sqrt(2 * np.pi) * σ) return N * np.exp(- 0.5 * ((x - μ)/σ + np.exp( - (x - μ)/σ))) -plt.figure() -# plt.figure(figsize=(3.5, 2.5)) -# plt.rcParams['font.size'] = 8 +def main(args): -# useful coordinates -# y_min = -0.0086 # y min axes -# y_max = 0.1895 # y max axes -# me = -0.22 # mode -# f_me = 0.1806 # f(mode) -# h_f_me = f_me/2 # falf f(mode) -# x_m = -1.5867 # x₋ -# x_p = 2.4330 # x₊ + # prepare figure + if args.show: + plt.figure() -# prepare plot -x, y = np.loadtxt(sys.stdin, unpack=True) -# plt.title('Landau distribution', loc='right') -# plt.xlim(-10, 10) -# plt.ylim(y_min, y_max) + elif args.save: + plt.rcParams['font.size'] = 8 + if args.both: + plt.figure(figsize=(3, 2)) + elif args.note: + plt.figure(figsize=(5, 3)) -# draw the lines -# plt.plot([-10, me], [f_me, f_me], color='gray') -# plt.plot([me, me], [f_me, y_min], color='gray') -# plt.plot([-10, x_p], [h_f_me, h_f_me], color='gray') -# plt.plot([x_m, x_m], [y_min, h_f_me], color='gray') -# plt.plot([x_p, x_p], [y_min, h_f_me], color='gray') + if args.note: -# draw the function -plt.plot(x, y, color='#92182b') + # useful coordinates + y_min = -0.0086 # y min axes + y_max = 0.1895 # y max axes + me = -0.22 # mode + f_me = 0.1806 # f(mode) + h_f_me = f_me/2 # falf f(mode) + x_m = -1.5867 # x₋ + x_p = 2.4330 # x₊ -# draw the notes -# s = 0.012 -# S = 0.2 -# plt.annotate('$f(m_e)$', [-10 + S, f_me - s]) -# plt.annotate('$f(m_e)/2$', [-10 + S, h_f_me - s]) -# plt.annotate('$x_-$', [x_m + S, y_min + s/2]) -# plt.annotate('$x_+$', [x_p + S, y_min + s/2]) -# plt.annotate('$m_e$', [me + S, y_min + s/2]) + # draw the lines + plt.plot([-10, me], [f_me, f_me], color='gray') + plt.plot([me, me], [f_me, y_min], color='gray') + plt.plot([-10, x_p], [h_f_me, h_f_me], color='gray') + plt.plot([x_m, x_m], [y_min, h_f_me], color='gray') + plt.plot([x_p, x_p], [y_min, h_f_me], color='gray') -# do Moyal plot -μ = -0.22278298 -σ = 1.1191486 -x = np.arange(-10, 30, 0.01) -plt.plot(x, moyal(x, μ, σ), color='gray') + # draw the notes + s = 0.012 + S = 0.2 + plt.annotate('$f(m_e)$', [-10 + S, f_me - s]) + plt.annotate('$f(m_e)/2$', [-10 + S, h_f_me - s]) + plt.annotate('$x_-$', [x_m + S, y_min + s/2]) + plt.annotate('$x_+$', [x_p + S, y_min + s/2]) + plt.annotate('$m_e$', [me + S, y_min + s/2]) -# save figure -plt.tight_layout() -plt.show() -# plt.savefig('notes/images/1-notes.pdf') -# plt.savefig('slides/images/both-pdf.pdf', transparent=True) + # prepare plot + plt.title('Landau distribution', loc='right') + plt.xlim(-10, 10) + plt.ylim(y_min, y_max) + + if args.both: + plt.ylim(-0.015, 0.265) + + # draw Landau plot + x, y = np.loadtxt(sys.stdin, unpack=True) + plt.plot(x, y, color='#92182b', label='Landau') + + # do Moyal plot + if args.both: + μ = -0.22278298 + σ = 1.1191486 + x = np.arange(-10, 30, 0.01) + plt.plot(x, moyal(x, μ, σ), color='gray', label='Moyal') + plt.legend() + + # save figure + plt.tight_layout() + if args.show: + plt.show() + elif args.save: + if args.note: + plt.savefig('notes/images/1-notes.pdf') + if args.both: + plt.savefig('slides/images/both-pdf.pdf', transparent=True) + + +if __name__ == '__main__': + + # Parse data + parser = argparse.ArgumentParser() + parser.add_argument('-i', '--show', + action='store_true', default=False, + help='show the plots') + parser.add_argument('-s', '--save', + action='store_true', default=False, + help='save the plots') + parser.add_argument('-b', '--both', + action='store_true', default=False, + help='do the both plot') + parser.add_argument('-n', '--note', + action='store_true', default=False, + help='do the note plot') + args = parser.parse_args() + main(args)