142 votes

L'ajout d'une ligne arbitraire, à un matplotlib parcelle de terrain dans ipython notebook

Je suis plutôt nouvelle pour python/matplotlib et de l'utiliser par le biais de la ipython notebook. Je suis d'essayer d'ajouter quelques lignes d'annotation à un graphique et je ne peux pas comprendre comment rendre les lignes sur un graphique. Ainsi, par exemple, si j'ai tracé les suivantes:

import numpy as np
np.random.seed(5)
x = arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
p =  plot(x, y, "o")

J'obtient le graphique suivant:

beautiful scatter plot

Alors, comment aurais-je ajouter une ligne verticale à partir de (70,100) jusqu'à (70,250)? Quid d'une ligne diagonale de (70,100) à (90 200 cas)?

J'ai essayé un certain nombre de choses avec Line2D() résultant en rien, mais la confusion de ma part. En R , je voudrais simplement utiliser les segments() fonction qui permettrait d'ajouter des segments de ligne. Est-il un équivalent en matplotlib?

216voto

gcalmettes Points 2391

Vous pouvez directement tracer les lignes que vous le souhaitez à l'alimentation de l' plot commande avec les données correspondantes (les frontières des segments):

plot([x1, x2], [y1, y2], color='k', linestyle='-', linewidth=2)

(bien sûr, vous pouvez choisir la couleur, la largeur de ligne, style de ligne, etc.)

À partir de votre exemple:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(5)
x = np.arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
plt.plot(x, y, "o")


# draw vertical line from (70,100) to (70, 250)
plt.plot([70, 70], [100, 250], 'k-', lw=2)

# draw diagonal line from (70, 90) to (90, 200)
plt.plot([70, 90], [90, 200], 'k-')

plt.show()

img

42voto

Austin Points 1199

À l'aide de vlines:

import numpy as np
np.random.seed(5)
x = arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
p =  plot(x, y, "o")
vlines(70,100,250)

L'appel de base de signatures:

vlines(x, ymin, ymax)
hlines(y, xmin, xmax)

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