Matplotlib connecte des points de nuage de points avec une ligne - Python


103

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 à R:

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

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

Comment faire cela en python?


5
Appeler show()après avoir appelé les deux scatter()et en plot()premier?

Réponses:


136

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 le même que

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

ou quel que soit le style de ligne que vous préférez.


3
'linestyle' était le bon indice de recherche par mot-clé pour me permettre de parcourir les documents (gynormous) de matplotlib.
Reb.Cabin le

2
@aaronsnoswell La taille et la couleur n'ont de sens que pour les points, que vous pouvez toujours tracer scatter, comme dans mon premier exemple. La question ne dit rien sur une épaisseur ou une couleur de ligne variable, donc je pense que votre critique est un peu injuste, vraiment.
Hannes Ovrén

28

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

On dirait que vous, Evert et Kigurai vont bien. Vous pouvez appeler à la fois scatter () et plot () avant d'appeler show (). Ou appelez simplement plot () avec les attributs line et point comme Steve Barnes l'a décrit. Merci
brno792

14

En plus de ce qui est fourni 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 scatter 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, la démo de zorder

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.