web-dev-qa-db-fra.com

Comment avoir des bacs logarithmiques dans un histogramme Python

Autant que je sache, l'option Log = True dans la fonction d'histogramme fait uniquement référence à l'axe des ordonnées.

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

J'ai besoin que les bacs soient équidistants dans log10. Est-ce qu'il y a quelque chose qui peut faire ça?

65
Brian

utilisez logspace () pour créer une séquence géométrique et transmettez-la au paramètre bins. Et définissez l'échelle de xaxis pour enregistrer l'échelle.

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

La méthode la plus directe consiste à calculer le log10 des limites, à calculer les tranches linéairement espacées, puis à reconvertir en augmentant la puissance à 10, comme ci-dessous:

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

Le code suivant indique comment vous pouvez utiliser bins='auto' avec l'échelle du journal.

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.

En plus de ce qui a été dit, cette opération sur les bases de données de pandas fonctionne également:

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

Je vous préviens qu'il peut y avoir un problème avec la normalisation des bacs. Chaque casier est plus grand que le précédent et doit donc être divisé par sa taille pour normaliser les fréquences avant de tracer, et il semble que ni ma solution, ni la solution de HYRY n'en tiennent compte.

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

0
Alaa Moussawi