import numpy as np from scipy.stats import binom import matplotlib.pyplot as plt import math import sys n = float(sys.argv[1]) p = float(sys.argv[2]) if len(sys.argv) > 3 : maxim = float(sys.argv[3]) else : maxim = n fig, ax = plt.subplots(1, 1, figsize=(14,6.20)) minim = 0 rango = maxim-minim ax.set_xlim(left=minim-rango/100, right=maxim+rango/100) ax.xaxis.set_ticks(range(minim, int(maxim)+1, 5)) mean, var = binom.stats(n, p, moments='mv') sigma = math.sqrt(var) text="$n$ = %3d $p$ = %3.2f $\mu$ = %3.2f $2\sigma$ = %3.2f" % (n,p,mean,2*sigma) plt.xlabel(text) x = np.arange(0,n+1) ax.vlines(x, 0, binom.pmf(x, n, p), colors='b', lw=5, alpha=0.5) y = np.array([mean-2*sigma,mean+2*sigma]) z = np.array([binom.pmf(int(n*p),n,p)/2,binom.pmf(int(n*p),n,p)/2]) ax.vlines(y, 0, z, colors='black', lw=2, linestyle = '--') plt.show()