2012-10-22 3 views
35

Ich habe ein Diagramm, berechnet aus einigen Daten, in Matplotlib gezeichnet. Ich möchte einen rechteckigen Bereich um das globale Maximum dieses Graphen zeichnen. Ich versuchte plt.axhspan, aber das Rechteck scheint nicht zu erscheinen, wenn ich rufe plt.show()Wie zeichne ein Rechteck über eine bestimmte Region in einem Matplotlib-Diagramm

Also, wie kann eine rechteckige Region auf eine Matplotlib-Grafik gezeichnet werden? Vielen Dank!

Antwort

45

Der wahrscheinlichste Grund ist, dass Sie Dateneinheiten für die X-Argumente beim Aufruf von axhspan verwendet haben. Von the function's docs (Hervorhebung):

y Koordinaten sind in Dateneinheiten und x Koordinaten sind in Achsen (relative 0-1) Einheiten.

Also wird jedes Rechteck, das sich links von 0 oder rechts von 1 erstreckt, einfach aus dem Plot gezogen.

Eine einfache Alternative könnte ein Rectangle zu Ihrer Achse hinzuzufügen sein (zum Beispiel über plt.gca und add_patch); Rectangle verwendet Dateneinheiten für beide Dimensionen. Das Folgende würde ein graues Rechteck mit der Breite & Höhe 1 zentriert auf (2,3) hinzufügen:

from matplotlib.patches import Rectangle 
someX, someY = 2, 3 
currentAxis = plt.gca() 
currentAxis.add_patch(Rectangle((someX - .5, someY - .5), 1, 1, facecolor="grey")) 
Verwandte Themen