PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gnuplottex -- Beamerklasse Problem



Curryhunter
27-01-2010, 15:24
Hallo,
folgendes Problem: Ich versuche gnuplot-Code direkt mithilfe von gnuplottex in die LaTeX-Beamerklasse einzubauen. In einem "normalen" Dokument (scrbook und andere) klappt das problemlos. Verwende ich als Dokumentklasse jedoch beamer, erhalte ich >10 Fehlermeldungen, a la: Illegal parameter number in definition of \test.
Illegal parameter number in definition of \iterate.

Warum? Und wie kann ich das vermeiden???
Danke schonmal!

Stefan

Minimalbeispiel:

\documentclass[ngerman]%{scrbook}
{beamer} % Ausgabe als Präsentation
\usetheme{Bergen} %einkommentieren bei Beamerklasse
\usepackage{babel} % deutsche rechtschreibung
\usepackage[T1]{fontenc} % Ausgabeencoding
\usepackage[latin1]{inputenc} % Eingabeencoding
\usepackage[miktex]{gnuplottex}
\author{myself}
\title{Sinus}
\date{\today}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
\begin{document}
\section{Sinus}
\subsection{Diagramm}
\begin{frame} %einkommentieren bei Beamerklasse
\begin{figure}
\begin{gnuplot}[terminal=epslatex]
# Benennung des Diagrammtitels und der Achsen
set title 'Sinusfunktion'
set xlabel ''
set ylabel ''
plot sin(x)
\end{gnuplot}
\caption{Sinusfunktion}
\end{figure}

\end{frame} %einkommentieren bei Beamerklasse
\end{document}

bobmalaria
27-01-2010, 22:26
hi,

wenn du das epslatex terminal verwendest, nimmst du dann auch den weg LaTex=>PS=>PDF um dein dokument zu erstellen?

wenn du nicht glücklich wirst, dann schau dir doch mal pgfplots an. das baut auf dem paket tikz auf das sowieso schon vonbeamer geladen wird. über -shell-escape / write18 lässt sich bei einem latex pdflauf gnuplot aufrufen, eine datentabelle wird erstellt und diese wird dann im dokument eingelesen. so bleibt ein weg LaTeX=>PDF direkt möglich ohne über PS gehen zu müssen.

gruss

Curryhunter
28-01-2010, 08:21
Ja, ich nutze den Weg über LaTeX->ps->pdf. Irgendwie muss das am Zusammenspiel mit beamer liegen, da es ja sonst funktioniert.
pgfplots hatte ich mal ausprobiert, aber für meinen eigentlichen Zweck (Messdatendarstellung) bin ich damit nicht klar gekommen:confused: Daher bin ich bei gnuplot gelandet.

Grüße
Stefan

voss
28-01-2010, 08:23
Ja, ich nutze den Weg über LaTeX->ps->pdf. Irgendwie muss das am Zusammenspiel mit beamer liegen, da es ja sonst funktioniert.
pgfplots hatte ich mal ausprobiert, aber für meinen eigentlichen Zweck (Messdatendarstellung) bin ich damit nicht klar gekommen:confused: Daher bin ich bei gnuplot gelandet.


dann nimmst du PSTricks, gnuplot braucht man nicht wirklich.
Zeig mal ein komplettes Beispiel, wie deine Daten dargestellt werden müssen.

Herbert

Curryhunter
28-01-2010, 17:45
Hallo,
bin leider erst jetzt dazu gekommen, viel zu tun heute:-(

Die angehängten Dateien zeigen einmal das gewünschte Ergebnis und den zugrundeliegenden Datensatz.
Nichts besonderes denke ich, ich will einfach nur immer gleich aussehende Diagramme erstellen, wenn ich solche Versuche mache. Excel z.B. ändert mir da einfach zu viel selber rum:mad:
Und in beamer sowie in normalen Dokumenten sollte es einbaubar sein.
Wäre schön, wenn mir da jemand weiterhelfen kann!
Danke schonmal!

Grüße
Stefan

voss
29-01-2010, 08:40
Hallo,
bin leider erst jetzt dazu gekommen, viel zu tun heute:-(

Die angehängten Dateien zeigen einmal das gewünschte Ergebnis und den zugrundeliegenden Datensatz.
Nichts besonderes denke ich, ich will einfach nur immer gleich aussehende Diagramme erstellen, wenn ich solche Versuche mache. Excel z.B. ändert mir da einfach zu viel selber rum:mad:
Und in beamer sowie in normalen Dokumenten sollte es einbaubar sein.
Wäre schön, wenn mir da jemand weiterhelfen kann!


eine Ausgleichskurve ist allerdings (noch) nicht möglich. Könnte man aber
umgehen, indem man die Werte erstmal vorher sortiert, bevor man sie
ausgibt, dann wäre eine Darstellung als Bezierkurve möglich.
Deinen Datensatz musst du mal erklären! Das geht dort ja wild durcheinander.

Angehängt die Darstellung der Punkte, wie es bislang problemlos geht.
Und ob das in beamer oder sonstwo eingefügt wird, ist egal.

Herbert

Curryhunter
29-01-2010, 12:48
Hallo,
das Ergebnis sieht ja schon sehr gut aus. Ausgleichslinien wären schon toll, aber sooo wichtig sind sie nicht unbedingt, da sie nur den Trend visualisieren sollen und keine Funktion der Messergebnisse darstellen.

Wie sähe denn der Code für diese Darstellung aus? Und wie, wenn man noch die Bezierkurve durchlegen würde? Ich hab da keinen Plan von.
Die angehängte Datei enthält diesmal sortierte Werte, kannst die benutzen!

Die Daten gehen so wild durcheinander, da der Versuchsaufbau dies so "erlaubt". Der Reaktor wird auf eine Wandtemperatur (sagen wir 1000°C) vorgeheizt, dann der Versuch gemacht. Gemessen wird allerdings die Gastemperatur (kleiner als Wandtemp.). Dann wird der Reaktor gespült und wieder erwärmt. Dies wird für jeden Brennstoff (hier immer der gleiche Brennstoff, aber unterschiedliche Atmosphäre) bei jeder Temperatur zweimal gemacht. Die Temperatur wird dann in definierten Schritten soweit verringert, bis keine Zündung mehr erfolgt. Dies ist ja nach Brennstoff ca. bei 750°C (Steinkohle) bis ca. 550°C (Biomassen) der Fall. Daher kann ich nie vorhersagen, wieviele Datensätze ich erhalte.
In der Datei, die ich hier hochgeladen habe, ist darüber hinaus auch noch der erste Brennstoff doppelt gemessen worden, daher gehen die Werte plötzlich wieder bei hohen Temperaturen los.

Grüße
Stefan

bobmalaria
29-01-2010, 19:14
hi,

und nur mal als alternative ein plot mit pgfplots mit dem vorteil weiterhin direkt ppflatex zu verwenden


\documentclass{article}
\usepackage{pgfplots}


\begin{document}

\pgfplotstableread{messdaten.txt}{\table}


\begin{tikzpicture}[scale=1.5]
\begin{axis}[
xlabel={Temperature in C},
ylabel={Time in ms}
]
\addplot+[only marks] table[x=C1,y=T1] from \table;
\addplot+[only marks] table[x=C2,y=T2] from \table;
\addplot+[only marks] table[x=C3,y=T3] from \table;
\addplot+[only marks] table[x=C4,y=T4] from \table;
\end{axis}
\end{tikzpicture}

\end{document}

bobmalaria
29-01-2010, 23:31
hi,

so jetzt habe ich noch dank dem entwickler des pgfplots paket ein nettes feature anzubieten. um die ausgleichsgeraden zu erstellen lässt sich per -shell-escape (linux) oder -enable-write18 (miktex) gnuplot aufrufen um daten zu fitten.

die fit funktion ist dabei natürlich selbst zu wählen. hier im beispiel war das nur eine geradengleichung


\listfiles
\documentclass{article}
\usepackage{pgfplots}


\begin{document}

\pgfplotstableread{messdaten.txt}{\table}


\begin{tikzpicture}[scale=1.5]
\begin{axis}[
xlabel={Temperature in C},
ylabel={Time in ms}
]
%Messpunkte plotten aus eingelesener tabelle
\addplot+[only marks] table[x=C1,y=T1] from \table;
\addplot+[only marks] table[x=C2,y=T2] from \table;
\addplot+[only marks] table[x=C3,y=T3] from \table;
\addplot+[only marks] table[x=C4,y=T4] from \table;
%
%Gnuplot aufrufen für berechnuung der geraden f(x)=a*x+b
\addplot+[raw gnuplot] gnuplot {
%fit function
f(x)=a*x+b;
%let gnuplot fit, skip header row (every ::2)
%using 1:2 sind die spalten 1,2. Bei folgenden plots spalten ändern
fit f(x) 'messdaten.txt' every ::2 using 1:2 via a,b;
%Plot the function
plot [x=600:1000] f(x);
};
\addplot+[raw gnuplot] gnuplot {
%fit function
f(x)=a*x+b;
%let gnuplot fit, skip header row (every ::2)
fit f(x) 'messdaten.txt' every ::2 using 3:4 via a,b;
%Plot the function
plot [x=600:1000] f(x);
};
\addplot+[raw gnuplot] gnuplot {
%fit function
f(x)=a*x+b;
%let gnuplot fit, skip header row (every ::2)
fit f(x) 'messdaten.txt' every ::2 using 5:6 via a,b;
%Plot the function
plot [x=600:1000] f(x);
};
\addplot+[raw gnuplot] gnuplot {
%fit function
f(x)=a*x+b;
%let gnuplot fit, skip header row (every ::2)
fit f(x) 'messdaten.txt' every ::2 using 7:8 via a,b;
%Plot the function
plot [x=600:1000] f(x);
};
\end{axis}
\end{tikzpicture}

\end{document}

Curryhunter
01-02-2010, 09:59
Hallo,
habe mal Dein Beispiel durchlaufen lassen, das klappt schon hervorragend (nachdem ich meine Pakete aktualisiert hab:D).
Nur mein Ergebnis sieht im Hinblick auf die Ausgleichsgerade anders aus. Bei mir wird jeder Messpunkt einzeln dargestellt, ich erhalte keine Linie.
Wenn Du da noch eine Idee hättest?

Grüße
Stefan

bobmalaria
01-02-2010, 16:38
hi,

da habe ich aus versehen eine option vergessen. versuche:


\addplot+[raw gnuplot, mark=none]

mehr line style optionen findest du im pgfmanual.pdf

gruss

Curryhunter
01-02-2010, 16:48
Danke!
So funktioniert alles Bestens!

Stefan

Curryhunter
03-02-2010, 18:38
Hallo,
der Paketautor des gnuplottex-Pakets hat mir soeben auch noch eine Lösung geschrieben, die ich Euch nicht vorenthalten möchte. Die jeweilige Folie muss einfach als fragil eingerichtet werden, siehe Min-Beispiel:

\documentclass[ngerman]{beamer}%{scrbook}
\usepackage{babel}
\usepackage[T1]{fontenc} %
\usepackage[latin1]{inputenc} %
\usepackage[miktex]{gnuplottex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
\begin{document}
\section{Sinus}
\subsection{Diagramm}
\begin{frame}[fragile]
\begin{figure}
\begin{gnuplot}[terminal=epslatex]
set title 'Sinusfunktion'
set xlabel 'pi'
set ylabel 'value'
plot sin(x)
\end{gnuplot}
\end{figure}

\end{frame}
\end{document}
und schon funktioniert es wieder ohne Umwege über andere, sicher auch sehr gute, Pakete.

Grüße
Stefan