web-dev-qa-db-fra.com

Matplotlib connecte les points du nuage de points avec la ligne - Python

J'ai deux listes, dates et valeurs. Je veux les tracer en utilisant matplotlib. Ce qui suit crée un nuage de points de mes données.

import matplotlib.pyplot as plt

plt.scatter(dates,values)
plt.show()

plt.plot(dates, values) crée un graphique linéaire.

Mais ce que je veux vraiment, c'est un nuage de points où les points sont reliés par une ligne.

Similaire à dans R:

plot(dates, values)
lines(dates, value, type="l")

, ce qui me donne un nuage de points superposé à une ligne reliant les points.

Comment puis-je faire cela en python?

81
brno792

Je pense que @Evert a la bonne réponse:

plt.scatter(dates,values)
plt.plot(dates, values)
plt.show()

Ce qui est à peu près la même chose que

plt.plot(dates, values, '-o')
plt.show()

ou peu importe linestyle vous préférez.

115
Hannes Ovrén

Pour les lignes rouges et les points

plt.plot(dates, values, '.r-') 

ou pour les marqueurs x et les lignes bleues

plt.plot(dates, values, 'xb-')
25
Steve Barnes

En plus de ce qui est prévu dans les autres réponses, le mot clé "zorder" permet de décider de l'ordre dans lequel les différents objets sont tracés verticalement. Par exemple.:

plt.plot(x,y,zorder=1) 
plt.scatter(x,y,zorder=2)

trace les symboles de dispersion en haut de la ligne, tandis que

plt.plot(x,y,zorder=2)
plt.scatter(x,y,zorder=1)

trace la ligne sur les symboles scatter.

Voir, par exemple, le démo de zorder

11
user3756936