5
Sto provando a tracciare un semplice istogramma usando matplotlib. Ho ad esempio (in pratica userò diverse funzioni a distanza)Istogrammi Matplotlib (domande di base)
import matplotlib.pyplot as plt
import numpy as np
import itertools
def hamdist(str1, str2):
"""Count the # of differences between equal length strings str1 and str2"""
if (len(str1) != len(str2)):
print str1, str2, "Length mismatch bozo!!!!!!"
diffs = 0
for ch1, ch2 in itertools.izip(str1, str2):
if ch1 != ch2:
diffs += 1
return diffs
n = 10
bins=np.arange(0,n+2,1)
hamdists = []
for str1 in itertools.product('01', repeat = n):
for str2 in itertools.product('01', repeat = n):
hamdists.append(hamdist(str1, str2))
plt.hist(hamdists, bins=bins)
plt.show()
Ottengo un istogramma simile a questo.
come faccio a fare il seguente?
- Change l'asse x in modo che l'ultima barra conta il numero per x = 10. Se semplicemente cambio di
bins=np.arange(0,11,1)
questo interrompe il valore di x = 10. - Label ogni punto del x- axis
- Sposta le etichette dell'asse x sotto il centro delle barre e non all'inizio come ora.
Quando ho impostato n = 10 e sull'uso di contenitori = np.arange (0, n + 1,1) le etichette di asse x ancora solo andare fino a 9 . Perché? Infine ... preferirei non avere le zecche reali in quanto sono confuse in un istogramma. – marshall
Perché 9 è l'inizio dell'ultimo cestino. Nel tuo post hai detto che vuoi solo visualizzare l'inizio, centrato sotto la barra. In realtà quel bin ha un range compreso tra 9 e 10. Puoi esplorare i risultati catturando il risultato della funzione hist: 'hist, bin, barre = ax.hist()' –
Oh grazie. Quindi una fine da 9 a 10 non deve essere inclusa nel cestino. – marshall