J'ai un DataFrame pandas qui a les valeurs suivantes dans une série
x = [2, 1, 76, 140, 286, 267, 60, 271, 5, 13, 9, 76, 77, 6, 2, 27, 22, 1, 12, 7, 19, 81, 11, 173, 13, 7, 16, 19, 23, 197, 167, 1]
On m'a demandé de tracer deux histogrammes dans un cahier Jupyter avec Python 3.6. Pas de sueur, non?
x.plot.hist(bins=8)
plt.show()
J'ai choisi 8 bacs parce que cela me semblait préférable ... J'ai également été chargé de tracer un autre histogramme avec le journal de x.
x.plot.hist(bins=8)
plt.xscale('log')
plt.show()
Cet histogramme a l'air terrible. Est-ce que je ne fais pas quelque chose de bien? J'ai essayé de jouer avec l'intrigue, mais tout ce que j'ai essayé semble simplement rendre l'histogramme encore pire. Exemple:
x.plot(kind='hist', logx=True)
Je n'ai pas reçu d'instructions autres que de tracer le journal de X sous forme d'histogramme.
J'apprécie vraiment toute aide !!!
Pour mémoire, j'ai importé pandas, numpy et matplotlib et spécifié que le tracé devrait être en ligne.
Spécifier bins=8
dans l'appel hist
signifie que la plage entre les valeurs minimale et maximale est divisée également en 8 groupes. Ce qui est égal sur une échelle linéaire est déformé sur une échelle logarithmique.
Ce que vous pouvez faire est de spécifier les cases de l'histogramme de manière à ce qu'elles aient une largeur inégale qui leur donne un aspect égal sur une échelle logarithmique.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x = [2, 1, 76, 140, 286, 267, 60, 271, 5, 13, 9, 76, 77, 6, 2, 27, 22, 1, 12, 7,
19, 81, 11, 173, 13, 7, 16, 19, 23, 197, 167, 1]
x = pd.Series(x)
# histogram on linear scale
plt.subplot(211)
hist, bins, _ = plt.hist(x, bins=8)
# histogram on log scale.
# Use non-equal bin sizes, such that they look equal on log scale.
logbins = np.logspace(np.log10(bins[0]),np.log10(bins[-1]),len(bins))
plt.subplot(212)
plt.hist(x, bins=logbins)
plt.xscale('log')
plt.show()
tracer un autre histogramme avec le journal de x.
n'est pas la même chose que tracer x sur l'échelle logarithmique. Tracer le logarithme de x serait
np.log(x).plot.hist(bins=8)
plt.show()
La différence est que les valeurs de x elles-mêmes ont été transformées: nous examinons leur logarithme.
Cela diffère du tracé de l'échelle logarithmique, où nous gardons x identiques mais modifions la manière dont l'axe horizontal est marqué (ce qui serre les barres à droite et les étend à gauche).