2011-07-28 18 views
56

O ile mi wiadomo, opcja Log = True w funkcji histogramu odnosi się tylko do osi y.Jak przechowywać logarytmiczne pisma w histogramie Python

P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step') 

Potrzebuję, aby pojemniki były równo rozmieszczone w log10. Czy jest coś, co może to zrobić?

+0

należy podzielić liczbę w każdym pojemniku przez szerokość bin Jeśli tak! – Peaceful

Odpowiedz

90

użyć logspace() do utworzenia sekwencji geometrycznej i przekazać ją do parametru bins. I ustaw skalę xaxis na skalę logarytmiczną.

import pylab as pl 
import numpy as np 

data = np.random.normal(size=10000) 
pl.hist(data, bins=np.logspace(np.log10(0.1),np.log10(1.0), 50)) 
pl.gca().set_xscale("log") 
pl.show() 

enter image description here

+15

Zwróć uwagę, że 'np.logspace (0.1.1.0, ...)' tworzy zakres od '10 ** 0.1' do' 10 ** 1.0', a nie od '0.1' do' 1.0' –

+11

powinien być 'np .logspace (np.log10 (0.1), np.log10 (1.0), 50) ' – OrangeSherbet

13

najbardziej bezpośredni sposób, aby po prostu obliczać log10 granicach obliczyć liniowo rozmieszczonych pojemników, a następnie przeprowadzić z powrotem przez podniesienie do potęgi 10, jak poniżej:

import pylab as pl 
import numpy as np 

data = np.random.normal(size=10000) 

MIN, MAX = .01, 10.0 

pl.figure() 
pl.hist(data, bins = 10 ** np.linspace(np.log10(MIN), np.log10(MAX), 50)) 
pl.gca().set_xscale("log") 
pl.show() 

log histogram from .01 to 10 http://i57.tinypic.com/f1z8uu.png

0

Oprócz tego, co zostało powiedziane, to na wykonywanie pand dataframes działa tak samo:

some_column_hist = dataframe['some_column'].plot(bins=np.logspace(-2, np.log10(max_value), 100), kind='hist', loglog=True, xlim=(0,max_value)) 

Ostrzegam, że może wystąpić problem z normalizacją pojemników. Każdy pojemnik jest większy niż poprzedni i dlatego musi być podzielony przez jego rozmiar, aby znormalizować częstotliwości przed wydrukowaniem i wydaje się, że ani moje rozwiązanie, ani rozwiązanie HYRY'ego nie uwzględnia tego.

Źródło: https://arxiv.org/pdf/cond-mat/0412004.pdf