38 votes

Python matplotlib pointillé en pointillé - comment faire?

Je utilise Python et matplotlib pour générer une sortie graphique.
Y a-t-il un moyen simple de générer un style de ligne point-tiret-tiret ?
Je connais les options '--', '-.' et ':'. Malheureusement, '-..' ne donne pas une ligne en point-tiret-tiret.
J'ai examiné la commande set_dashes, mais cela semble contrôler la longueur des tirets et l'espace entre deux tirets adjacents.
Une option pourrait être de tracer deux lignes l'une sur l'autre ; une en pointillés avec un espace important entre les tirets - et une en pointillés, avec les points aussi larges que les tirets et espacés de sorte que deux points se trouvent entre chaque tiret. Je ne doute pas que cela puisse être fait, j'espère simplement qu'il y ait un moyen plus facile.
Ai-je manqué une option ?

62voto

unutbu Points 222216

Vous pouvez définir des tirets personnalisés :

import matplotlib.pyplot as plt

line, = plt.plot([1,5,2,4], '-')
line.set_dashes([8, 4, 2, 4, 2, 4]) 
plt.show()

entrer la description de l'image ici

[8, 4, 2, 4, 2, 4] signifie

  • 8 points actifs, (tiret)
  • 4 points inactifs,
  • 2 points actifs, (point)
  • 4 points inactifs,
  • 2 points actifs, (point)
  • 4 points inactifs.

@Achim a noté que vous pouvez également spécifier le paramètre dashes :

plt.plot([1,5,2,4], '-', dashes=[8, 4, 2, 4, 2, 4])
plt.show()

produit le même résultat que celui montré ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X