135 votes

lignes verticales et horizontales dans matplotlib

Je ne comprends pas bien pourquoi je ne parviens pas à créer des lignes horizontales et verticales aux limites spécifiées. Je voudrais lier les données par cette boîte. Cependant, les côtés ne semblent pas se conformer à mes instructions. Comment cela se fait-il ?

# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

enter image description here

181voto

BBrown Points 310

Les fonctions pyplot que vous appelez, axhline() y axvline() dessine des lignes qui couvrent une partie de la plage de l'axe, quelles que soient les coordonnées. Les paramètres xmin o ymin utiliser la valeur 0,0 comme minimum de l'axe et 1,0 comme maximum de l'axe.

Au lieu de cela, utilisez plt.plot((x1, x2), (y1, y2), 'k-') pour tracer une ligne du point (x1, y1) au point (x2, y2) en couleur k. Voir pyplot.plot .

33voto

jdhao Points 3136

C'est peut-être un problème courant pour les nouveaux utilisateurs de Matplotlib de tracer des lignes verticales et horizontales. Afin de comprendre ce problème, vous devez savoir que différents systèmes de coordonnées existent dans Matplotlib .

La méthode ligne axiale y axvline sont utilisés pour tracer des lignes à l axes coordonnés . Dans ce système de coordonnées, la coordonnée du point inférieur gauche est (0,0), tandis que la coordonnée du point supérieur droit est (1,1), quelle que soit la plage de données de votre tracé. Les deux paramètres xmin y xmax sont dans l'intervalle [0,1].

D'autre part, la méthode hlines y vlines sont utilisés pour tracer des lignes à l coordonnées de données . La gamme pour xmin y xmax sont dans la plage de la limite des données de l'axe des x.

Prenons un exemple concret,

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 100)
y = np.sin(x)

fig, ax = plt.subplots()

ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')

plt.show()

Il produira le graphique suivant : enter image description here

La valeur de xmin y xmax sont les mêmes pour le axhline y hlines méthode. Mais la longueur de la ligne produite est différente.

16voto

tcaswell Points 21489

Si vous voulez ajouter une boîte de délimitation, utilisez un rectangle :

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

Rectangle doc

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