web-dev-qa-db-fra.com

Tracer le graphique linéaire à partir des données de l'histogramme dans matplotlib

J'ai un tableau numpy d'ints représentant des périodes, que je suis en train de représenter dans un histogramme pour obtenir un graphe de distribution de Nice, en utilisant le code suivant:

ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r")

Cependant, j'essaie de modifier ce graphique pour représenter exactement les mêmes données en utilisant une ligne au lieu de barres, afin de pouvoir superposer plus d'échantillons sur le même tracé et de les effacer (sinon les barres se chevauchent). Ce que j’ai essayé jusqu’à présent, c’est d’assembler le tableau de données en un tableau de n-uplets contenant (temps, nombre), puis de le tracer à l’aide de

ax.plot(data[:,0],data[:,1],color="red",lw=2)

Toutefois, cela ne me donne rien de proche, car je ne peux pas simuler avec précision l’option des bacs de l’histogramme de mon graphique. Y a-t-il une meilleure manière de faire cela?

23
CNeo

Vous pouvez enregistrer la sortie de hist, puis la tracer.

import numpy as np
import pylab as p

data=np.array(np.random.Rand(1000))
y,binEdges=np.histogram(data,bins=100)
bincenters = 0.5*(binEdges[1:]+binEdges[:-1])
p.plot(bincenters,y,'-')
p.show()
36
imsc

Je suis très en retard à la fête - mais peut-être que cela sera utile à quelqu'un d'autre. Je pense que ce que vous devez faire est de définir le paramètre histtype sur 'step', c.-à-d.

ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r", histtype = 'step')

Voir aussi http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html

39
Ger

Essayez ax.plot(Zip(*data)[:][0],Zip(*data)[:][1],color="red",lw=2) 

0
George