PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GNUplot Diagramme nutzen liefert Fehler und gnoplottex macht auch Probleme



andi67
26-10-2009, 01:26
Hallo,
ich habe ein paar Fragen und Probleme mit der Verwendung von gnuplot und LaTeX.
Zum einen will ich gleich mal vorwegnehmen das ich keine Ahnung habe von den ganzen Terminal settings und ähnlichem habe. Mein System ist Windows (Vista 64) und ich nutze Winshell mit Miktex (ver 2.7) [außerdem habe ich noch texniccenter installiert].

1. Zunächst habe ich versucht ein gnuplot Diagramm (ein einfacher Plot einer Testfunktion) mit "file->output device: latex" als terminal Settings, in eine Txt Datei ausgeben zu lassen. Das hat auch funktioniert, hier sind aber die ersten Probleme aufgetaucht: Der Code war ziemlich lang und es sah so aus als würde der Code das Diagramm quasi nachbilden, jeden einzellnen Punkt usw. wenn das wirklich so ist, dann könnte das bei meinem eigentlichen Vorhaben, nämlich ein Diagramm aus mind. 100.000 Werteparten in einem Latex erzeugten pdf Dokument unterzubringen, zu einem ziemlich unübersichtlichtem Unterfangen werden. Das Diagramm würde im Latexcode dann ja 99% meines Quellcodes ausmachen, ganz davon abgesehen das ich 10 solche Diagramme in das Dokument einfügen will. Naja auch davon abgesehen, hat mir das kompilieren des texfiles sowieso ein paar Fehler angezeigt:


Hamilton.tex(924): Fehler: ! Missing $ inserted.
Hamilton.tex(924): Fehler: ! Extra }, or forgotten $.
Hamilton.tex(924): Fehler: ! Missing $ inserted.
Hamilton.tex(924): Fehler: ! Missing } inserted.
die Zeile auf die es sich bezieht ist mitten im von Qnuplot erzeugtem Code (Ausschnitt - 3. Zeile):


\put(231.0,860.0){\rule[-0.200pt]{293.657pt}{0.400pt}}
\put(70,495){\makebox(0,0){h^{2}}}
\put(840,29){\makebox(0,0){t/U}}

Das Diagramm wurde zwar angezeigt, aber da ich die Fehler ungern stehen lassen will, habe ich das ganze erstmal abgebrochen (aber auch weil ich nach einer Alternative suche um nicht 1 Millionen Zeilen Code nur für die Diagramme im Texfile zu haben).

2. Mein neuer Versuch, war die Verwendung von gnuplottex.
Ich habe das Paket eingebunden mit:


\usepackage{gnuplottex}

und dachte ich kann nun die plots direkt in das tex File schreiben und muss nicht die abermillionen Zeilen an Code für jedes Diagramm nehmen. Natürlich gab es wieder ein Problem:


Package gnuplottex Warning: Shell escape not enabled.

Ich habe mich etwas informiert und habe erfahren das ich dem Latex Compiler noch ein Argument mitliefern muss: "--enable-write18"
das habe ich also mit angefügt, und trotzdem der Fehler. Dann habe ich sichergestellt, dass der path des /gnuplot/bin Verzeichnisses der entsprechenden Umgebungsvariablen angehängt wurde und wgnuplot in gnuplot umbenannt (ich kann nun auch mit der Kommandozeile von überall 'gnuplot' aufrufen). Doch wieder brachte dies nichts, der Fehler blieb.
Dann habe ich gelesen, dass der Fehler wohl angeblich immer da bleibt, selbst wenn Shell escape aktiviert ist. Doch in meinem Fall ist es wohl wirklich nicht angeschaltet, denn es werden keine Diagramme angezeigt.

Dann habe ich mir neben Winshell sogar noch Texniccenter installiert und das ganze mit diesem Programm versucht. Doch leider, das gleiche Ergebnis (hier habe ich natürlich auch die Argumente für den Compiler angepasst).

Naja ich bin jetzt etwas ratlos. Kann mir jemand helfen?

Curryhunter
26-10-2009, 14:01
Hi!
habe auch erst vor kurzem mit gnuplot angefangen, aber ich denke ich kann helfen. Allerdings nutze ich TexnicCenter, die Anpassung für WinShell kann ich nicht machen.

In Deinem Ausgabeprofil sollte stehen (hier Beispiel LaTex->ps->pdf):
Pfad des Compilers --> auf die latex.exe setzen
Argumente an den Compiler:

--src -interaction=nonstopmode --enable-write18 "%Wm"

Als Option bei gnuplottex würde ich noch miktex setzen:

\usepackage[miktex]{gnuplottex}
Und dann nur noch das Bild mit den gnuplot-Befehlen:

\begin{figure}[!ht]
\begin{gnuplot}[terminal=epslatex]
\end{gnuplot}
\caption{tolles Bild, wenn oberhalb Befehle stehen würden}
\end{figure}


Wenn Du dann deine Daten alle noch in einer z.B: .csv Datei hast, kannst du die doch mit gnuplot einlesen. gnuplot erstellt dann automatisch mehrere Dateien, welche dann als Bild sofort in deine .ps,.pdf oder sonstige Dateien eingebaut werden. Da hast du gar kein Problem mehr mit der Länge des "Codes", wo im übrigen wirklich der Verlauf der Linien anhand der Datenpunkte nachgestellt wird.

Der Fehler der angezeigt wird ist übrigens das fehlende $-Zeichen vor und nach der mathematischen Anweisung:

\put(70,495){\makebox(0,0){$h^{2}$}}


Ich hoffe, geholfen zu haben!
Grüße
Stefan

andi67
26-10-2009, 14:39
Danke erstmal für deine Hilfe, das ist schonmal sehr beruhigend, nur habe ich festgestellt das ich im Texniccenter kein Profil: LaTeX -> ps -> pdf habe sondern nur Profile: LaTeX -> PDF, LaTeX -> DVI und LaTeX -> PS.
Wie bekomme ich das von dir erwähnte Profil mit in die Auswahl? Kann ich das irgendwo importieren oder muss ich das manuell kofigurieren?

edit: ich habe es schon selbst hinbekommen und habe es auch so getestet wie du es beschrieben hast. Es funktioniert super, danke.

Aber scheinbar habe ich noch nicht durchschaut wie ich die Achsen richtig beschriften kann, was bisher gut klappt ist das ich in der gnuplot Umgebung mit "load" eine Txt Datei lade welche die gnuplot befehle enthällt. In dieser Datei setze ich mit:
set ylabel "$\hbar^{2}$"
eine Achsenbeschriftung für die y-Achse. Im fertigen Dokument steht aber in kursiver Schrift das hbar ausgeschrieben und nicht wie erwartet das h-Quer. Der Backslash ist aber nicht vorhanden und das ^2 wurde auch korrekt übersetzt.

Curryhunter
26-10-2009, 15:52
Hallo,
da musste ich auch erst einmal nachsehen...
Aber dann wars mal wieder ganz offensichtlich, die " sind falsch! So klappts:
set ylabel '$\hbar^{2}$'

andi67
26-10-2009, 16:07
Oh damit hab ich jetzt nicht gerechnet :) Danke für die Hilfe.