Seite 1 von 1

matplotlib zip?

Verfasst: Freitag 27. Februar 2009, 11:58
von MB
Hallo Anfängerfreunde,

Ich bin seit zwei Monaten dabei, pthon zu erlernen: mcht #ne Menge Spass. Jetzt bin ich auf einProblem bei folgender Demo gestossen:

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))

def onclick(event):
    print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
        event.button, event.x, event.y, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', onclick)

def onpick(event):
    thisline = event.artist
    xdata = thisline.get_xdata()
    ydata = thisline.get_ydata()
    ind = event.ind
    print 'onpick points:', zip(xdata[ind], ydata[ind])

fig.canvas.mpl_connect('pick_event', onpick)

plt.show()
Die Funktion onpick funktioniert nicht. Ich denke das liegt an zip(). Ich konnte leider nicht zu disem Ausdruck finden. Wofür steht der ? Bei mir ist er auch NICHT grün, wie in dem Demo-Code.
Kann mir jemand weiterhelfen?

Gruß
MB

Verfasst: Freitag 27. Februar 2009, 12:27
von cofi
zip ist eine built-in Funktion, d.h. an mangelnder Verfügbarkeit kann es nicht liegen (Ich nehme mal an du nutzt kein Python 3, denn Matplotlib und numpy sind noch nicht portiert)
zip packt übergebene Sequenzen zu einer Sequenz von Tupeln zusammen.

Nunja ... ob das grün, gelb, dunkelrosa oder etwas anderes ist, hat mit gültigem Code wenig zu tun und ist Sache des Editors. Wenn du uns die Fehlermeldung mitteilst kann dir schon eher geholfen werden, sonst artet das hier nur in gerate aus .. und meine Kristallkugel ist schon wieder in Reparatur :(

Verfasst: Freitag 27. Februar 2009, 13:00
von CM
Und wenn Du gerade dabei bist ... Kannst Du uns auch sagen welches GUI-backend Du verwendest bzw. wogegen ist mpl kompiliert und was steht in Deinem matplotlibrc-File, falls Du ein solches hast?

Bei mir nämlich läuft der obige Code fehlerlos (mit wx).

Gruß,
Christian

Verfasst: Freitag 27. Februar 2009, 15:53
von MB
Hallo,
ich benutze python 2.5. das ich mir als bundle von python(xy) geladen habe.

Nein, eine Fehlermedlung bekomme ich keine; allerdings bekomme ich auck das onpick print statement nicht, wenn ich auf die Kurve klicke; hingegen funktioniert onclick print schon.

Das backend, das ich benutze ist Qt4Agg.
Wonach soll ich denn in matplotlibrc suchen ?

Vielen Dank, MB

Verfasst: Freitag 27. Februar 2009, 18:36
von birkenfeld
Ich könnte mir auch eine zu alte Matplotlib-Version als Grund vorstellen.