wake-up-neo.net

Wie logarithmische Bins in einem Python-Histogramm erstellt werden

Soweit ich weiß, bezieht sich die Option Log = True in der Histogrammfunktion nur auf die Y-Achse.

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

Ich möchte, dass die Behälter in log10 gleichmäßig verteilt sind. Gibt es etwas, das das kann?

65
Brian

verwenden Sie logspace (), um eine geometrische Sequenz zu erstellen, und übergeben Sie sie an den Parameter bins. Legen Sie die Skalierung der X-Achse auf Log-Skala fest.

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

103
HYRY

Der direkteste Weg ist, einfach das log10 der Grenzwerte zu berechnen, linear beabstandete Bins zu berechnen und dann durch Erhöhen auf die Potenz 10 zurück zu konvertieren:

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()

 log10 spaced bins

15
Nimar

Der folgende Code gibt an, wie Sie bins='auto' mit der Protokollskala verwenden können.

import numpy as np
import matplotlib.pyplot as plt

data = 10**np.random.normal(size=500)

_, bins = np.histogram(np.log10(data + 1), bins='auto')
plt.hist(data, bins=10**bins);
plt.gca().set_xscale("log")
5
N. McA.

Zusätzlich zu dem, was gesagt wurde, funktioniert das auch auf Pandas-Dataframes:

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

Ich möchte darauf hinweisen, dass es ein Problem mit der Normalisierung der Behälter geben könnte. Jeder Behälter ist größer als der vorhergehende und muss daher nach seiner Größe geteilt werden, um die Frequenzen vor dem Plotten zu normalisieren. Dies scheint weder meine Lösung noch die Lösung von HYRY zu berücksichtigen.

Quelle: https://arxiv.org/pdf/cond-mat/0412004.pdf

0
Alaa Moussawi