Seite 1 von 1

Matplotlib importieren?

Verfasst: Dienstag 11. November 2008, 23:24
von Sheldon
Hallo,

ich will ein Programm schreiben, in dem ich Messdaten aus einer Datei selektieren kann und dann plotten. Wollt es ursprünglich mit Canvas machen, aber ein Freund hat mir dann zu matplotlib geraten, da man da einfach Beschriftung und Achsen gleich mit drin hat.
Hab also bisl dazu gegoogelt und mir über universe die nötigen Pakete geladen.
Den plot befehl kriegt man auch ordentlich erklärt und es funktioniert auch alles im pylab, nur beim einbinden ins Hauptprogramm hängts.

Wie muss ich es richtig importieren, und v.a. was alles (ich mach immer pylab und matplotlib)?

Wenn ich es so mach, gibt es immer das Problem, das die Tkinter-Elemente auf einmal unbekannte Befehle aufweisen:

Code: Alles auswählen

unexpected keyword argument 'text'
Das ist in allen anderen Programmen auch so, importier ich pylab, kennt er die befehle auf einmal nicht, lösch ichs wieder, klappt alles.
Und mach ich ein Testprogramm ohne Grafikelemente (nur Tkinter import), scheint er das Programm fehlerfrei auszuführen, nur seh ich keinen Ausgabegraphen!

Kann mir bitte jemand helfen?

Danke!

Verfasst: Dienstag 11. November 2008, 23:32
von DasIch
Zeig mal lauffähigen Code bei dem dass Problem auftritt.

Verfasst: Mittwoch 12. November 2008, 09:26
von Sheldon
Hallo,

ich hoffe du meinst mit lauffähigem Programm das Problem damit, dass ich nix sehe, dass wäre ganz einfach irgend sowas:

Code: Alles auswählen

from Tkinter import *
from pylab import *
from matplotlib import *

import math, time, random

x=[]
y=[]
for i in range(0,100,1):
	x.insert(i, i)
	y.insert(i, int(10*random.random()))
matplotlib.pyplot.plot(x,y)
Ich krieg einen code 0 zurück, d.h. es hat alles geklappt, nur leider seh ich nix.
Fehlt da noch was?

Verfasst: Mittwoch 12. November 2008, 10:41
von CM
Hoi,

Auf der MPL-Seite gibt es auch eine Doku. Die würde ich in jedem Fall mal durchschauen. Ansonsten gibt es eine Beispielseite mit diversen Beispielen zum Embedding in Tk. Wenn Du aber nur einen Plot mal eben schnell anschauen möchtest, so sollte Dein matplotlibrc den Verweis auf "TkAgg" enthalten oder Du machst:

Code: Alles auswählen

import matplotlib
matplotlib.use('TkAgg')
import pylab
pylab.plot(...)
pylab.show()
Wichtig: matplotlib.use() immer vor dem Import von pylab machen. matpltolib ist gewissermassen das OO-Interface und pylab das "sequentielle Interface". Insofern verwende ich den matplotlib-namespace im Wesentlichen zum Konfigurieren und beim Embedding in GUIs. Für schnelle Skripte reicht i.d.R. der pylab-namespace. Aber ohne show() weiß Python auch nicht, dass jetzt was angezeigt werden soll.

Sinnvoll ist auf jedem Fall auch numpy und scipy zu installieren.

Sternchenimporte würde ich dann aber auch bei kurzen Skripten lassen, damit Du immer weißt woher der Code kommt, den Du ansprichst: numpy oder pylab?

HTH
Christian

PS Wenn Du viel interaktiv machen möchtest, sei Dir ipython empfohlen. Das funktioniert auch ganz wunderbar mit MPL. Siehe auch

Verfasst: Mittwoch 12. November 2008, 16:59
von Sheldon
Hallo,

vielen Dank, es hat funktioniert!

Den show-Befehl hab ich heute früh auch noch gefunden, brachte aber auch nix. Es lag wohl an matplotlib.use('TkAgg'). Ich hatte immer nur Dokus zu wx oder cgi gefunden, aber nie für tkinter, daher hatte ich nur matplotlib.use('Agg') gekannt und probiert, natürlich auch erfolglos.
Auch danke für den Link, den guck ich mir auf jeden Fall an!