2016-07-30 11 views
1

ich etwas plot(x,y) mit plotten möge angezeigt und in der Lage in xsowohl den Wert und der Index in den x-Zecken in einem Grundstück

Zum Beispiel des Index des Wertes auf dem Grundstück zu sehen.

x = [10,30,100,120] 
y = [16,17,19,3] 
plot(x,y) 

zeigen

enter image description here

auf dem Grundstück suchen, um es hart an jedem Punkt zu wissen, was der ursprüngliche Index war. Zum Beispiel möchte ich wissen können, wenn ich auf den Punkt (100,19) schaue, dass es Index 2 ist, seit x[2]=100 und y[2]=19. Wie mache ich das in Matplotlib. Ich schaute auf twiny() Funktion, aber das scheint nur eine weitere Achsen hinzufügen, die Entfernung zwischen den Punkten in x ignorieren.

Antwort

1

Hier ist meine Lösung:

import matplotlib.pyplot as plt 
x = [10,30,100,120] 
y = [16,17,19,3] 
plt.plot(x,y); 
for i, (a, b) in enumerate(zip(x, y)): 
    plt.annotate(str(i), xy=(a, b), textcoords="offset points", xytext=(0, 12), 
       horizontalalignment='center', verticalalignment='center') 
plt.xlim(0, 130) 
plt.ylim(0, 22) 

Was es tut: es zählt auf y und x Arrays, den Index in der Variablen i und die jeweiligen Werte von x und y in den Variablen a und b speichern. Anschließend wird der Index i an den Koordinaten (a, b) mit Anmerkungen versehen, wodurch der Text um 12 Pixel auf der Y-Achse versetzt wird, um eine Beschriftung zu vermeiden, die die Kurve abdeckt.

Das Ergebnis:

enter image description here

+0

Für sehr große Diagramm, das heißt 1000s Punkte langsam dies ist ansonsten gut laufen könnte. Vielen Dank! – tal