it-swarm.com.de

vertikale und horizontale Linien in Matplotlib

Ich verstehe nicht ganz, warum ich keine horizontalen und vertikalen Linien an festgelegten Grenzen erstellen kann. Ich möchte die Daten an diese Box binden. Die Seiten scheinen jedoch meinen Anweisungen nicht zu entsprechen. Warum ist das?

# 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

112
Rohit

Die von Ihnen aufgerufenen Pyplot-Funktionen axhline() und axvline() zeichnen Linien, die sich über einen Teil des Achsenbereichs erstrecken, unabhängig von den Koordinaten . Die Parameter xmin oder ymin verwenden den Wert 0.0 als Minimum der Achse und 1.0 als Maximum der Achse.

Verwenden Sie stattdessen plt.plot((x1, x2), (y1, y2), 'k-'), um eine Linie vom Punkt (x1, y1) zum Punkt (x2, y2) in Farbe k zu zeichnen. Sehen pyplot.plot .

152
Bennett Brown

Wenn Sie einen Begrenzungsrahmen hinzufügen möchten, verwenden Sie ein Rechteck:

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

Rectangle doc

16
tacaswell

Dies ist möglicherweise ein häufiges Problem für neue Benutzer von Matplotlib, vertikale und horizontale Linien zu zeichnen. Um dieses Problem zu verstehen, sollten Sie sich bewusst sein, dass verschiedene Koordinatensysteme in Matplotlib existieren .

Mit der Methode axhline und axvline werden Linien an der Achsenkoordinate gezeichnet. In diesem Koordinatensystem ist die Koordinate für die untere linke Ecke (0,0), während die Koordinate für die obere rechte Ecke (1,1) ist, unabhängig vom Datenbereich Ihres Diagramms. Sowohl der Parameter xmin als auch xmax liegen im Bereich [0,1].

Andererseits werden die Methoden hlines und vlines verwendet, um Linien an der Datenkoordinate zu zeichnen. . Der Bereich für xmin und xmax liegt im Datenlimitbereich der x-Achse.

Nehmen wir ein konkretes Beispiel:

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

Es wird die folgende Handlung erzeugen: enter image description here

Der Wert für xmin und xmax ist für die Methoden axhline und hlines identisch. Aber die Länge der produzierten Linie ist unterschiedlich.

12
jdhao