SciPy – Esempi grafici di Distribuzione Normale (cerchi ed ellissi)
In questo capitolo facciamo ancora un po di esempi di grafici creando cerchi ed ellissi utilizzando la distribuzione normale supponendo di voler campionare una Gaussiana bi dimensionale con media = 0 e varianza = 1.
Il risultato che otteniamo è una Gaussiana di forma circolare in quanto ogni dimensione non è correlata ed è indipendente l’una dall’altra.
A questo link potete trovare la precedente guida su come utilizzare il grafico scatter: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/python-data-analisi/matplotlib-per-python/matplotlib-grafico-scatter-o-di-dispersione/
Utilizzando le funzioni già utilizzate nei capitoli precedenti aggiungiamo una nuova dimensione e quello che dovremmo ottenere rappresentando il tutto in un grafico scatter è una nuvola di punti distribuiti in forma circolare.
from scipy.stats import norm import numpy as np import matplotlib.pyplot as plt r = np.random.randn(10000, 2) plt.scatter(r[:,0], r[:,1])
Il grafico che otteniamo è il seguente:
Nella figura sopra gli assi x e y hanno una scala diversa pertanto l’immagine è più simile ad un ellisse piuttosto che ad un cerchio, per visualizzarlo correttamente basta aggiungere plt.axis(“equal”) per visualizzare gli assi con la stessa scala.
Qui un link utile: https://matplotlib.org/examples/pylab_examples/axis_equal_demo.html
from scipy.stats import norm import numpy as np import matplotlib.pyplot as plt r = np.random.randn(10000, 2) plt.scatter(r[:,0], r[:,1]) plt.axis("equal") plt.show()
In questo modo se vogliamo rappresentare un ellisse ci basta modificare la varianza sul secondo asse in questo modo:
from scipy.stats import norm import numpy as np import matplotlib.pyplot as plt r = np.random.randn(10000, 2) r[:,1] = 6 * r[:,1] + 2 plt.scatter(r[:,0], r[:,1]) plt.axis("equal") plt.show()
Quindi il risultato sarà il seguente:
Nella lezione successiva si vedrà come creare delle ellissi non allineate agli assi.