ubuntuusers.de

Gnuplot in LaTex

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Nobody86

Anmeldungsdatum:
22. Mai 2008

Beiträge: 203

Hallo,

habe heute den ganzen Tag versucht Gnuplot in LaTeX zu integrieren, und mittlerweile gibt es "nur noch" 2 Kleinigkeiten die ich aber auf biegen und brechen nicht gelöst bekomme.

Folgende Situation:

Ich möchte eine Messreihe auswerten und verwende dazu Gnuplot, den Bericht schreibe ich in LaTeX. Zuerst habe ich die Grafen als png gespeichert und danach dann als Bild importiert, das hat den Nachteil das die Bildqualität nicht immer die selbe ist wenn der Graf etwas skaliert. Außerdem werde ich dadurch unflexibel, da ich beim ändern eines Wertes erst eine neue png erstellen muss.

Zufällig bin ich dann auf das Paket gnuplottex gestoßen mit dem der Gnuplot "Quelltext" direkt im Latex Dokument erstellt und an Ort und Stelle ausgewertet werden kann, ein Beispiel:

\begin{figure}[!ht]
 \centering
 \begin{gnuplot} 
  set grid
  set xlabel 'Etwas in $mm$'
  set ylabel '\rotatebox{90}{Spannung in $\frac{N}{m^2}$}'
  set xrange [200:0]
  set yrange [1e6:3.96e7]
  set ytics ( '+20'		3.96e7,\
				  '3.30e7'	3.30e7,\
				  '-20'		2.64e7,\
				  '-40'		1.96e7,\
				  '-60'		1.32e7,\
				  '-80'		0.66e7 )
  plot	"Daten/csv/Mess.txt"	using 1:5 with linespoints title 'Parabolisch' 1 4
 \end{gnuplot}
 \caption{Mess1}
\end{figure}

Dabei treten 2 Probleme auf:

1. Das Bild ist Schwarz-Weiß, und sieht dadurch langweilig aus, etwas Farbe sollte da schon rein.

Angeblich kann der gnuplot Umgebung noch Optionen mitgegeben werden (es ist was anderes als PDF, aber daran sollte es nicht scheitern da ich alles ausprobiert habe und die Fehlermeldung die gleiche bleibt):

\begin{gnuplot}[terminal=pdf]

nur funktioniert das bei mir nicht, es kommt zu folgender Fehlermeldung:

package keyval Error: terminal undefined \begin{gnuplot}[terminal=pdf]

Keine Ahnung wie ich das beheben könnte.

2. Ich kann in Beschriftungen kein % (Prozent) Zeichen benutzen. Normalerweise wird in Latex ja das Prozent mittels \% eingefügt, aber

(...)
set ytics ( '+20 \%'		3.96e7,\
				  '3.30e7'	3.30e7,\
				  '-20 \%'		2.64e7,\
(...)

führt leider dazu das dass Bild nicht mehr Dargestellt werden wird.

alle anderen Sonderzeichen wie \! \S \$ funktionieren, nur das \% geht nicht. Ich vermute das gnuplut das % für irgendwas reserviert hat, weiß jemand ob es eine alternativen Latex-Befehl gibt?

bena

Anmeldungsdatum:
10. Juli 2008

Beiträge: Zähle...

Nicht getestet, aber: Optionen werden dem Paket eigentlich VOR dem Paketnamen mitgegeben, z. B.

\begin[terminal=pdf]{gnuplot}

Vielleicht hilft das fuer dein erstes Problem.

Mit gnuplot kenne ich mich nicht aus, sorry.

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Die in 9.10 mitgelieferte Version von gnuplottex kennt für die gnuplot-Umgebung nur den Parameter scale. Möglicherweise brauchst du eine neuere Version.

Für das Prozent-Zeichen würde ich mal versuchen, ob zusätzliche '' helfen.

Nobody86

(Themenstarter)

Anmeldungsdatum:
22. Mai 2008

Beiträge: 203

Hi,

ich habe mal nachgeschaut und es ist genauso wie du gesagt hast diesch, mein .sty file hat nur das eine Argument. Die aktuelle Version von ctan.org hat ein zip file in dem terminal und terminaloptions definiert ist, allerdings habe ich keine Ahnung wie ich das installieren soll.

Gibt es evtl. externe paketquellen die ich nur einbinden muss und die aktuelle Version wird dann automatisch geladen?

Das Prozentzeichen habe ich jetzt hin gekriegt es ist '\%%' (auch die Hochkomma) dadurch wird die nachfolgende Zeile im Editor zwar optisch auskommentiert, doch im compilierten PDF-File sieht es wunderbar aus.

Danke schon mal,

Sven

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

https://launchpad.net/~aelmahmoudy/+archive/tl2009 ist ein PPA für TeXLive 2009, da ist vermutlich auch ein aktuelleres gnuplottex dabei. Über die Qualität kann ich nicht sagen, für mich reicht die alte TeXLive von 9.10 bisher aus.

Vermutlich reicht es, den Inhalt des ZIPs nach /home/diesch/texmf/tex/latex/gnuplottex/ oder /usr/local/share/texmf/tex/latex/gnuplottex/ (ich hab's mir nicht angeschaut) zu entpacken und texhash oder sudo texhash aufzurufen.

penguin

Anmeldungsdatum:
24. November 2006

Beiträge: 274

Hi,

lad Dir einfach die neueste Version von gnuplottex herunter: http://www.ctan.org/tex-archive/help/Catalogue/entries/gnuplottex.html

und entpack das Archiv. Anschließend den enthaltenen File gnuplottex.ins mit latex durchlaufen lassen:

latex gnuplottex.ins

und den ursprünglichen sty-File ausfindig machen, z.B. mit locate

sudo updatedb
locate gnuplottex.sty

anschließend den alten sty-File gegen den neuen ersetzen (bei mir in /usr/share/texmf-texlive/tex/latex/gnuplottex/)

sudo mv gnuplottex.sty /usr/share/texmf-texlive/tex/latex/gnuplottex/

und zur Sicherheit nochmal texhash aufrufen (weiß nicht ob das nötig ist.)

sudo texhash

Noch zwei Anmerkungen:

mit dem Terminal pdf verschwinden bei mir die Achsenbeschriftungen, deswegen verwende ich epstopdf, d.h. im Header

\usepackage[]{epstopdf}

und die Umgebung

\begin{gnuplot}[terminal=epslatex,terminaloptions=color solid]
plot sin(x)
\end{gnuplot}

Anschließend auf der Kommandozeile mit shell-Escape aufrufen

pdflatex --shell-escape example.tex

Viel Erfolg und viele Grüße,

penguin

Nobody86

(Themenstarter)

Anmeldungsdatum:
22. Mai 2008

Beiträge: 203

Danke, das ist eine große Hilfe für mich gewesen, nun sehen die Grafen sehr ansprechend aus.

Eine Sache ist mir allerdings aufgefallen. Wenn ich das Dokument compiliere werden zwar die eps Dateien, nicht jedoch die pdf Dateien, überschrieben. Bedeutet für mich also das ich erst alle .pdf Dateien löschen muss bevor ich kompiliere. Sonst werden Veränderungen nicht dargestellt.

Gibt es eine Möglichkeit die automatisch zu überschreiben, oder vor dem compilieren automatisch zu löschen? (ich benutze Kile 2.0.81)

Danke nochmal!

Apollo75

Anmeldungsdatum:
9. November 2005

Beiträge: 256

Ich hätte hier auch noch eine kurze Frage: Kann gnuplot nicht direkt in einer LaTeX-Umgebung arbeiten? ... also ohne den Umweg über eps? Mir geht es darum, dass auch die Schriften und mögliche Formeln von gnuplot schön dargestellt werden können. Bisher habe ich noch nicht damit gearbeitet - ich werde auch erst auf TeXLive2009 updaten müssen.

Grüße, Apollo

Nobody86

(Themenstarter)

Anmeldungsdatum:
22. Mai 2008

Beiträge: 203

Hi Apollo,

Gnuplot arbeitet mehr oder weniger direkt in LaTeX. Alle Schriften sind mit der LaTeX Schriftart identisch, und auch Formeln kann man an entsprechende Stellen schreiben (im nachfolgenden Beispiel das N/m^2 an der Ordinate).

Das mit dem % Zeichen war ne harte Nuss, es darf nicht in " (Anführungszeichen) sondern muss in '(Hochkomma) Zeichen stehen, und das Prozent muss doppelt geschrieben werden. Formeln werden gewohnt in $ eingebettet.

%=================================
\begin{figure}[!ht]
 \centering
 \begin{gnuplot}[terminal=epslatex,terminaloptions=color solid]
  set grid
  set xlabel 'Elementgröße in $mm$'
  set ylabel 'Spannung in $\frac{N}{m^2}$'
  set xrange [20:0]
  set yrange [1e8:6e8]
  set ytics ( '+300 \%%'	6.0e8,\
				  '+200 \%%'	4.5e8,\
				  '+150 \%%'	3.75e8,\
				  '+100 \%%'	3.0e8,\
				  '+80 \%%'		2.7e8,\
				  '+60 \%%'		2.4e8,\
				  '+40 \%%'		2.1e8,\
				  '+20 \%%'		1.8e8,\
				  '1.5e8'		1.5e8,\
				  '-20 \%%'		1.2e8 )
  plot "Daten/csv/KragarmRundeKante5mm.txt"	using 1:2 title "Arm"	with linespoints 3, \
		 "Daten/csv/KragarmRundeKante5mm.txt"	using 4:5 title 'Kante'	with linespoints 2, \
		 "Daten/csv/KragarmRundeKante5mm.txt"	using 7:8 title 'Ecke'	with linespoints 1
 \end{gnuplot}
 \caption{Spannungen am Kragarm, runde Kante $\unit{5}{\milli\metre}$}
 \label{fig:KragarmRundeKante5Spannung}
\end{figure}

bartholomew83

Avatar von bartholomew83

Anmeldungsdatum:
2. August 2012

Beiträge: Zähle...

Moin Leute,

danke für den netten Thread, hat mir schon sehr geholfen beim Einbinden meiner Diagramme in LaTeX!

Ich hätte noch eine Frage. Und zwar schreibt mir Latex nach dem Konvertieren in das .*pdf die *.eps-Dateien der Diagramme einfach in den Ordner, wo mein Tex-file ist. Kann ich dem nicht sagen, dass der die in einen Unterordner schreiben soll?

Hätte es gerne etwas übersichtlicher. Bei Bildern geht das ja auch ... will mir für die Diagramme Unterordner für das jeweilige Kapitel basteln.

Und ist es weiterhin möglich, den shell-escape-Befehl automatisch ausführen zu lassen? Ich nutze für Latex den "Kile"-Editor (version 2.1.0) unter Ubuntu.

Danke & Gruß

P.S. also man kann bei Kile irgendwie unter "Configure" → "Build" da wohl -shell-escape hinzufügen ... muss das da unter "Options" rein, wenn ja, wie? Hab das schon in verschiedenen Variationen probiert, nur kommt immer die Fehlermeldung beim kompilieren:

/usr/share/texmf-texlive/tex/latex/oberdiek/epstopdf-base.sty:0: Shell escape feature is not enabled

bartholomew83

Avatar von bartholomew83

Anmeldungsdatum:
2. August 2012

Beiträge: 15

Hallo,

also an alle, die mit dem Shell-escape das gleiche Problem haben. Durch mehrmaliges ausprobieren habe ich es hinbekommen.

Unter Build einfach den Befehl PDFLaTeX bearbeiten im Feld "Options" den bestehenden Inhalt löschen und in der (und nur der) Form ersetzen:

-interaction=nonstopmode -shell-escape '%source'

alles andere brachte nicht den Erfolg ... mit den Zeichen scheint Kile sehr zickig zu sein. Aber so haut das schonmal hin.

Finde ich noch eine Lösung, wie die .tex und .eps-Dateien, die bei der Verwendung von gnuplot in Latex einfach in den Dokumentordner gespeichert werden, in einen Unterordner gespeichert werden können, werde ich das hier auch noch schreiben. Über eine Hilfe bei diesem Problem wäre ich jedenfalls sehr dankbar!

Gruß

bartholomew83

Avatar von bartholomew83

Anmeldungsdatum:
2. August 2012

Beiträge: 15

Hi und frohe Ostern! 😉

Mit dem 2.Problem bin ich noch nicht wirklich weitergekommen.

Also, das Paket "epstopdf" schreibt ja die .eps-Dateien, die aus Gnuplot kommen in .pdf-Dateien um. Dieser Speicherort kann am Anfang wie folgt festgelegt werden:

\epstopdfsetup{outdir=./Ausgabeordner/Kapitel3/}

So werden meine Graphen.pdf zumindest schonmal nicht mehr im "Hauptordner" gespeichert.


Allerdings befinden sich nun noch die .eps-Dateien dort, die ja gnuplot ausgibt?!

Kann ich nicht irgendwie, bei den Options was festlegen? Habe mal folgendes ohne Erfolg ☹ probiert:

 \begin{gnuplot}[terminal=epslatex,output=~/Ausgabeordner/Kapitel3/ terminaloptions=color solid]
 ... # hier der Plot 
 \end{gnuplot}

Eine solche Ausgabefunktion scheint es nicht zu geben. Beim folgenden Link versuchte jemand sich sowas in der ".sty" etwas selbst zu basteln. Damit komme ich aber leider gar nicht klar. http://www.golatex.de/gnuplottex-anpassen-t6167.html


Desweiteren gibt es noch einen Vorschlag, wo über das Package

\usepackage{etoolbox} 

die entsprechenden Stellen modizifiziert werden, um auch zusätzlich die .tex-Files in einen Ausgabeordner zu speichern. http://tex.stackexchange.com/questions/36147/how-do-i-get-the-gnuplottex-epstopdf-package-to-work-with-output-dir-and-au ... allerdings funktioniert der Lösungsvorschlag bei mir auch nicht.


Hoffentlich liest hier noch jemand mit... Im Zweifel wird halt der "Hauptordner" mit .eps und .tex-files nur so zugebombt :-/ Schade.

Euch noch frohe Feiertage! Grüße

Antworten |