Matplolib erlaubt jetzt "Anmerkungszeilen", wie das OP gesucht hat. Die annotate()
Funktion ermöglicht verschiedene Arten von Verbindungspfaden, und ein kopfloser und schwanzloser Pfeil, dh eine einfache Linie, ist eine davon.
ax.annotate("",
xy=(0.2, 0.2), xycoords='data',
xytext=(0.8, 0.8), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3, rad=0"),
)
In der Dokumentation heißt es, dass Sie nur einen Pfeil mit einer leeren Zeichenfolge als erstes Argument zeichnen können.
Aus dem Beispiel des OP:
%matplotlib notebook
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.annotate("",
xy=(70, 100), xycoords='data',
xytext=(70, 250), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3,rad=0."),
)
# draw diagonal line from (70, 90) to (90, 200)
plt.annotate("",
xy=(70, 90), xycoords='data',
xytext=(90, 200), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3,rad=0."),
)
plt.show()
Genau wie beim Ansatz in der Antwort von gcalmettes können Sie die Farbe, die Linienbreite, den Linienstil usw. auswählen.
Hier ist eine Änderung an einem Teil des Codes, durch die eine der beiden Beispielzeilen rot, breiter und nicht 100% undurchsichtig wird.
# draw vertical line from (70,100) to (70, 250)
plt.annotate("",
xy=(70, 100), xycoords='data',
xytext=(70, 250), textcoords='data',
arrowprops=dict(arrowstyle="-",
edgecolor = "red",
linewidth=5,
alpha=0.65,
connectionstyle="arc3,rad=0."),
)
Sie können der Verbindungslinie auch eine Kurve hinzufügen, indem Sie die connectionstyle
.