LaTex in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

Es geht um folgendes, kleines Programm:

from Numeric import *
import numpy
from pylab import *

rc('text', usetex = True)

x=array([0.3,0.8,1.1,1.6,2.3,2.4,3.0,3.2,3.5,3.6,4.0,5.0])
y=array([0.3,0.2,1.5,2.0,1.5,1.2,2.6,3.0,2.5,3.9,2.9,4.1])

t=arange(0.0,5.0,0.05)

m,b=numpy.polyfit(x,y,1)
lin=m*t+b

plot(x,y,'bo',t,lin,'r-',linewidth=2)

setp(xlim(0.0,5.0))
setp(ylim(0.0,5.0))

xlabel('x-Werte',{'fontsize':20})
ylabel('y-Werte',{'fontsize':20})

xticks(size=18)
yticks(size=18)

title('Messdaten und lineare Regression',{'fontsize':24})

text(0.2,3.8,r'm = $\frac{ \huge \sum x_{i} \sum y_(i) - n \cdot \sum x_{i} y_{i}}{( \
\sum x_{i} )^2-n \cdot \sum x^2_{i}}$',
{'color':'r','fontsize':20})
text(0.2,3.5,r'b = $\bar{y} - a \cdot \bar{x} $',{'color':'g','fontsize':20})

show()

Sobald ich die rc und text Zeilen rausnehme gibt es kein Problem, sind sie aber drinne bekomme ich folgende, lange Fehlermeldung:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
return self.func(*args)
File "C:\Python24\Lib\site-packages\matplotlib\backends\backend_tkagg.py", line 151, in resize
self.show()
File "C:\Python24\Lib\site-packages\matplotlib\backends\backend_tkagg.py", line 154, in draw
FigureCanvasAgg.draw(self)
File "C:\Python24\Lib\site-packages\matplotlib\backends\backend_agg.py", line 392, in draw
self.figure.draw(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\figure.py", line 544, in draw
for a in self.axes: a.draw(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\axes.py", line 1063, in draw
a.draw(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\axis.py", line 561, in draw
tick.draw(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\axis.py", line 161, in draw
if self.label1On: self.label1.draw(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\text.py", line 838, in draw
Text.draw(self, renderer)
File "C:\Python24\Lib\site-packages\matplotlib\text.py", line 340, in draw
bbox, info = self._get_layout(renderer)
File "C:\Python24\Lib\site-packages\matplotlib\text.py", line 187, in _get_layout
w,h = renderer.get_text_width_height(
File "C:\Python24\Lib\site-packages\matplotlib\backends\backend_agg.py", line 239, in get_text_width_height
texmanager = self.get_texmanager()
File "C:\Python24\Lib\site-packages\matplotlib\backend_bases.py", line 413, in get_texmanager
from matplotlib.texmanager import TexManager
File "C:\Python24\Lib\site-packages\matplotlib\texmanager.py", line 61, in ?
class TexManager:
File "C:\Python24\Lib\site-packages\matplotlib\texmanager.py", line 83, in TexManager
dvipngVersion = get_dvipng_version()
File "C:\Python24\Lib\site-packages\matplotlib\texmanager.py", line 58, in get_dvipng_version
raise RuntimeError('Could not obtain dvipng version')
RuntimeError: Could not obtain dvipng version

Das soll eingeltich nen Beispielprogramm sein, was ist falsch ? Oder habe ich mal wieder irgenwas vergessen ?

JJ
Zuletzt geändert von JackJohnson am Montag 10. Dezember 2007, 12:29, insgesamt 2-mal geändert.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

1. Miau ._.
2. DVIPNG scheint nicht installiert zu sein...
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

DVIPNG , wo kann ich das herbekommen ? Habe jetzt schon viel gegoogelt bin aber nicht so richtig vorrangekommen...

Ich benutzte Windows Xp...
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Versuch es hier mal.
Gruss Helmut
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi "JackJohnson",

Ein paar Vorschläge:

- wie auch BlackVivi schrieb: http://www.python-forum.de/faq.php#21
- verzichte auf die Sternchenimporte. Wenn Du

Code: Alles auswählen

from pylab import *
nach

Code: Alles auswählen

from Numeric import *
schreibst, überschreiben Deine matplotlib-Numerix-Einstellungen ggf. den namespace von numpy/Numeric/Scipy und damit hast du z. T. auch andere Funktionalität als die, die Du erwartest.
- Wieso importierst Du überhaupt Numeric? Dafür gibt es eigentlich nur den Grund wegen anderer Module, die noch nicht auf numpy umgestellt haben. Ansonsten ist numpy up to date und sollte genutzt werden. Mehr dazu hier: http://numpy.scipy.org/
- Etwas wie

Code: Alles auswählen

m = $\frac{ \huge \sum x_{i} \sum y_(i) - n \cdot \sum x_{i} y_{i}}{( \
\sum x_{i} )^2-n \cdot \sum x^2_{i}}$
sieht nicht so doll aus, weil 'm = ' dann nicht Teil der Formel ist und ggf. anders gesetzt wird, besser wäre

Code: Alles auswählen

$\rm{m} = ...
, bzw. \mathrm oder was auch immer Dir sonst so in den Kopf kommt. ;-)

Gruß,
Christian
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

Danke !

Habe jetzt LaTex zum Laufen bekommen, aber wie es immer ist, ein Problem geschaft zwei sind neu aufgekommen:

Ich bekomme immer nur den letzten Latexausdruck richtig auf dem Bildschirm zu sehen.

Wenn ich dann den plot abspeichern will, seh dich garnichtsmehr....

Edit: Okay, ich weit jetzt, dass das Latexproblem nur auftritt, wenn ich die Größe bestimmen will, soblad ich das weglasse, sehe ich ihn....
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Es gibt nicht zufällig eine Fehlermeldung?
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

Ne, dass ist ja das komische für mich.... er macht "alles" ohne ein Murcks von sich zu geben......
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

Okay, habe es teilweise hinbekommen, jetzt zeigt er mir alles in LaTex an, die Größe kann ich nicht ändern, aber dass ist mir egal.....

Damit ich dann wunschlos glücklich bin, bräuchte ich noch zwei Befehle: Zum einen, dass ich in einem Plott die Achseneinteilung selbst vornehmen kann, zB:

Das er bei der Cosinusfunktion nicht mit anzeigt, wo die x-Achse 1 ist, sondern Pi....

Und wie ich die Größe das Plottfensters automatisch vergrößern kann. (Das komplette Fenster nicht den plott)

Viellen Dank für die ganze Mühe.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

JackJohnson hat geschrieben:Das er bei der Cosinusfunktion nicht mit anzeigt, wo die x-Achse 1 ist, sondern Pi....
pylab.yticks resp. xticks (dazu mehr in den Beispielen (s. u.))
JackJohnson hat geschrieben:Und wie ich die Größe das Plottfensters automatisch vergrößern kann. (Das komplette Fenster nicht den plott)
Das Fenster passt sich an die Größe des Plots an. Du mußt also von matplotlib.figure die Figure-Klasse importieren und mit einer Figure-Instanz weiterarbeiten. Klingt kompliziert, aber wenn Du Dir die Beispiele runterlädst, dann siehst Du unter "embedding_in_tk.py" wie es gemacht wird. Überhaupt sind die Beispiele eine tolle Quelle von Info, auch, wenn nicht alles ideal ist. Die eigentliche Anleitung ist auch nicht schlecht ;-) .
JackJohnson hat geschrieben: Viellen Dank für die ganze Mühe.
Das ist keine Mühe. Ich mag jetzt auch keine RTFM-Antwort geben, aber es fällt auch Dir leichter, wenn Du erst einmal die Anleitung ( http://matplotlib.sourceforge.net/tutorial.html und http://matplotlib.sourceforge.net/users ... 1.2svn.pdf ) anschaust. (Muß ja nicht gleich alles auf einmal sein ;-) .

Gruß,
Christian
JackJohnson
User
Beiträge: 8
Registriert: Donnerstag 6. Dezember 2007, 23:50

Sorry für die vielleicht "dumme" Frage, aber gibts die auch auf deutsch ?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Meines Wissens nach nicht. Unabhängig davon sind übersetzte Anleitungen auch oft nicht auf der Höhe der Zeit: Übersetzen kostet viel Zeit und Mühe. Lohnt sich daher selten.
Insgesamt wird Du um die lingua franca des Computerzeitalters nicht herumkommen, wenn Du bei der Sache bleiben willst.

Gruß,
Christian
Antworten