Chciałbym użyć Matplotlib do wykreślenia histogramu dla danych, które zostały wcześniej zliczone. Na przykład, że mam dane suroweWykreślanie histogramu z wcześniej zliczonych danych w Matplotlib
data = [1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 10]
Biorąc pod uwagę te dane, można użyć
pylab.hist(data, bins=[...])
wykreślić histogram.
W moim przypadku, dane zostały wstępnie liczone i jest reprezentowany jako słownik:
counted_data = {1: 1, 2: 2, 3: 1, 4: 1, 5: 4, 6: 1, 10: 1}
Idealnie, chciałbym przekazać tej pre-liczony dane do funkcji histogramu, który pozwala mi kontrolę szerokość kosza, zakres wydruku, itp., tak jakbym przekazał mu surowe dane. Jako obejście, jestem rozszerza moje liczniki do surowych danych:
data = list(chain.from_iterable(repeat(value, count)
for (value, count) in counted_data.iteritems()))
To jest nieefektywne gdy counted_data
zawiera liczbę milionów punktów danych.
Czy jest łatwiejszy sposób użycia Matplotlib do tworzenia histogramu z moich wcześniej zliczonych danych?
Alternatywnie, jeśli najłatwiej jest po prostu spakować dane, które zostały wstępnie zbuforowane, czy istnieje wygodna metoda polegająca na "zwijaniu" licznika pojedynczych elementów do liczby binów?
Jak sidenote: poszerzyć swoje liczniki do surowych danych, można również użyć 'klasę Counter' i jego elementy() metoda: ' ze zbiorów importować Counter ' ' c = Counter (counted_data) ' ' data = lista (c.elements()) ' – fireboot