Eine Annotation mit Matplotlib kommentieren

9

Ich mache gerade eine "fancy" Annotation in Matplotlib:

%Vor%

Ich möchte jetzt ein wenig Text neben dem Pfeil hinzufügen. Die Ausgabe sollte wie folgt aussehen:

Ich bin an einer allgemeinen Lösung interessiert, bei der die Textplatzierung programmgesteuert auf der Wahl des Pfeilpfades des Renderers basiert. Z. B.

  • Der Text sollte passend für unbekannte Werte von src_pos und dst_pos .
  • platziert werden
  • Der Text sollte entsprechend platziert werden, unabhängig davon, wie arrowprops eingestellt ist und welche connectionstyle verwendet wird.
  • Ich würde bevorzugen , um plt.draw() bis zum Ende des Skripts nicht aufrufen zu müssen.

Danke!

    
BrianTheLion 02.12.2013, 00:05
quelle

2 Antworten

2

Schauen Sie sich einfach die Seite Ссылка an. Es scheint, dass der Text unabhängig vom Pfeil platziert werden kann, wenn Sie die Koordinaten kennen. Fügen Sie dies vor dem Befehl draw () hinzu:

%Vor%

Im Sinne einer verallgemeinerten Lösung wäre es so komplex wie das ursprüngliche Annotat, weil es abhängig von den Parametern, die dem Annotat gegeben werden, ziemlich viele unterschiedliche Arten von Dingen gibt. Wenn beispielsweise der Pfeilstil nicht angegeben wird, wird eine YAArow-Patch-Instanz erstellt. Sie können YAArows get_path () aufrufen, aber ein Pfad ist von begrenztem Nutzen, da es mehr oder weniger nur eine Sammlung von Punkten ist. Sie müssten ein "find_middle_of_path ()" schreiben, das berücksichtigen muss, dass Pfade nicht notwendigerweise zusammenhängend sein müssen und dass manchmal alle Attribute des Pfades nicht von Methoden ausgefüllt werden, die es verwenden, usw Ein Beispiel dafür, wenn ein Pfeilpfad nicht zusammenhängend wäre, wäre, wenn die Mitte des Pfeilpfads am Rand der Figur abgeschnitten ist.

Wenn pfeilstil angegeben wird, wird eine FancyArrowPatch-Instanz erstellt. Wenn ein FancyArrowPatch erstellt wird, können Sie get_path_in_displaycoord () aufrufen, um den Pfad mit dem gleichen Vorbehalt wie für den YAArow-Pfad zu erhalten.

IMHO ist es besser, eine Reihe von einfachen Routinen zu erstellen, die zweimal kommentieren, eine für den Pfeil und eine für den Text, die den wahrscheinlich begrenzten Möglichkeiten entsprechen, die Sie wirklich verwenden möchten.

    
Troy Rockwood 05.12.2013 00:40
quelle
0

Es gibt eine weitere Option text() , um beliebigen Text zum Plot an einer bekannten Position hinzuzufügen. unter diesem Link finden Sie weitere Optionen

%Vor%

Dies ist nicht abhängig von arrowprops

    
Thiru 06.12.2013 07:22
quelle

Tags und Links