Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gnuplot Tikz Output in LaTeX einbinden

196 views
Skip to first unread message

Gudrun

unread,
Jun 25, 2011, 5:13:34 AM6/25/11
to
Hallo DCTT,
mit Gnuplot45 gibt es das Terminal lua tikz, wobei man einen .tex-
Output bekommt, den man dann in eine tikzpicture-Umgebung einbauen
kann.
Dazu habe ich einige Fragen:
1. Habt ihr schon mal das usepackage \usepackage{gnuplot-lua-tikz}
gesehen? Wo kommt das genau her?
2. Anbei habe ich ein Minimalbeispiel angefügt. Mir gelingt es nicht,
das Bild Gnuplotoutput richtig in Beamer-TeX zu skalieren. Es sollte
0.5\textwidth haben und die Schriftart sollte entsprechend kleiner
werden, damit es auf die Seite paßt. Außerdem reicht das ylabel in y-
Achsenbeschriftung hinein.
Ich habe schon innerhalb Gnuplot mit den Skalierungsparametern
herumgespielt, aber da war ich leider nicht erfolgreich.

Da ich dachte, das sei mehr ein LaTeX-Problem,dachte ich frage hier um
Rat statt bei comp.graphics.apps.gnuplot. Entschuldigung, falls Ihr
das anders seht.

Gruß
Gudrun


%%%%%%%%%%%%%% Minimalbeispiel %%%%%%%%%%%%

\documentclass[xcolor={RGB,x11names,table,hyperref}, compress]{beamer}


\begin{filecontents*}{Gnuplotoutput}

%% \begin{tikzpicture}[gnuplot]
%% generated with GNUPLOT 4.5p0 (Lua 5.1; terminal rev. 99, script
rev. 98)
%% Fr 24 Jun 23:51:06 2011
\path (0.000,0.000) rectangle (12.500,8.750);
\gpcolor{color=gp lt color border}
\gpsetlinetype{gp lt border}
\gpsetlinewidth{1.00}
\draw[gp path] (1.872,0.985)--(1.962,0.985);
\draw[gp path] (11.947,0.985)--(11.857,0.985);
\draw[gp path] (1.872,1.929)--(1.962,1.929);
\draw[gp path] (11.947,1.929)--(11.857,1.929);
\draw[gp path] (1.872,2.661)--(1.962,2.661);
\draw[gp path] (11.947,2.661)--(11.857,2.661);
\draw[gp path] (1.872,3.259)--(1.962,3.259);
\draw[gp path] (11.947,3.259)--(11.857,3.259);
\draw[gp path] (1.872,3.765)--(1.962,3.765);
\draw[gp path] (11.947,3.765)--(11.857,3.765);
\draw[gp path] (1.872,4.203)--(1.962,4.203);
\draw[gp path] (11.947,4.203)--(11.857,4.203);
\draw[gp path] (1.872,4.589)--(1.962,4.589);
\draw[gp path] (11.947,4.589)--(11.857,4.589);
\gpcolor{color=gp lt color axes}
\gpsetlinetype{gp lt axes}
\draw[gp path] (1.872,4.935)--(11.947,4.935);
\gpcolor{color=gp lt color border}
\gpsetlinetype{gp lt border}
\draw[gp path] (1.872,4.935)--(2.052,4.935);
\draw[gp path] (11.947,4.935)--(11.767,4.935);
\node[gp node right] at (1.688,4.935) {1x10$^{-1}$};
\draw[gp path] (1.872,7.209)--(1.962,7.209);
\draw[gp path] (11.947,7.209)--(11.857,7.209);
\gpcolor{color=gp lt color axes}
\gpsetlinetype{gp lt axes}
\draw[gp path] (1.872,0.985)--(1.872,7.209);
\gpcolor{color=gp lt color border}
\gpsetlinetype{gp lt border}
\draw[gp path] (1.872,0.985)--(1.872,1.165);
\draw[gp path] (1.872,7.209)--(1.872,7.029);
\node[gp node center] at (1.872,0.677) {0.10};
\draw[gp path] (3.657,0.985)--(3.657,1.075);
\draw[gp path] (3.657,7.209)--(3.657,7.119);
\draw[gp path] (4.701,0.985)--(4.701,1.075);
\draw[gp path] (4.701,7.209)--(4.701,7.119);
\draw[gp path] (5.442,0.985)--(5.442,1.075);
\draw[gp path] (5.442,7.209)--(5.442,7.119);
\draw[gp path] (6.017,0.985)--(6.017,1.075);
\draw[gp path] (6.017,7.209)--(6.017,7.119);
\draw[gp path] (6.486,0.985)--(6.486,1.075);
\draw[gp path] (6.486,7.209)--(6.486,7.119);
\draw[gp path] (6.883,0.985)--(6.883,1.075);
\draw[gp path] (6.883,7.209)--(6.883,7.119);
\draw[gp path] (7.227,0.985)--(7.227,1.075);
\draw[gp path] (7.227,7.209)--(7.227,7.119);
\draw[gp path] (7.531,0.985)--(7.531,1.075);
\draw[gp path] (7.531,7.209)--(7.531,7.119);
\gpcolor{color=gp lt color axes}
\gpsetlinetype{gp lt axes}
\draw[gp path] (7.802,0.985)--(7.802,6.413);
\draw[gp path] (7.802,7.029)--(7.802,7.209);
\gpcolor{color=gp lt color border}
\gpsetlinetype{gp lt border}
\draw[gp path] (7.802,0.985)--(7.802,1.165);
\draw[gp path] (7.802,7.209)--(7.802,7.029);
\node[gp node center] at (7.802,0.677) {1.00};
\draw[gp path] (9.587,0.985)--(9.587,1.075);
\draw[gp path] (9.587,7.209)--(9.587,7.119);
\draw[gp path] (10.631,0.985)--(10.631,1.075);
\draw[gp path] (10.631,7.209)--(10.631,7.119);
\draw[gp path] (11.372,0.985)--(11.372,1.075);
\draw[gp path] (11.372,7.209)--(11.372,7.119);
\draw[gp path] (11.947,0.985)--(11.947,1.075);
\draw[gp path] (11.947,7.209)--(11.947,7.119);
\draw[gp path] (1.872,7.209)--(1.872,0.985)--(11.947,0.985)--
(11.947,7.209)--cycle;
\node[gp node center,rotate=-270] at (0.246,4.097) {Absolute Intensity
[cm$^{-1}$]};
\node[gp node center] at (6.909,0.215) {q [nm$^{-1}$]};
\node[gp node center] at (6.909,8.287) {Protein in seinem Buffer};
\node[gp node center] at (6.909,7.671) { (pH=3.8, pH adjusted with CH
$_{3}$COOH)};
\node[gp node right] at (10.479,6.875) {Protein c=10mg/ml};
\gpcolor{rgb color={0.690,0.188,0.376}}
\gpsetlinewidth{2.00}
\gpsetpointsize{4.00}
\gppoint{gp mark 6}{(2.174,5.911)}
\gppoint{gp mark 6}{(2.460,5.972)}
\gppoint{gp mark 6}{(11.938,1.918)}
\gppoint{gp mark 6}{(11.944,1.910)}
\gppoint{gp mark 6}{(11.121,6.875)}
\gpcolor{color=gp lt color border}
\node[gp node right] at (10.479,6.567) {Sodium Acetate Buffer};
\gpcolor{rgb color={0.000,0.000,0.502}}
\gppoint{gp mark 4}{(2.174,3.189)}
\gppoint{gp mark 4}{(2.460,3.201)}
\gppoint{gp mark 4}{(11.944,1.831)}
\gppoint{gp mark 4}{(11.121,6.567)}
\gpcolor{color=gp lt color border}
\gpsetlinewidth{1.00}
\draw[gp path] (1.872,7.209)--(1.872,0.985)--(11.947,0.985)--
(11.947,7.209)--cycle;
%% coordinates of the plot area
\gpdefrectangularnode{gp plot 1}{\pgfpoint{1.872cm}{0.985cm}}
{\pgfpoint{11.947cm}{7.209cm}}
%% \end{tikzpicture}

\end{filecontents*}

%For tikz plots and gnuplot
\usepackage{tikz}
\usepackage{gnuplot-lua-tikz} %Wo genau kommt das style-file her?

\begin{document}


\begin{frame}
\begin{columns}
\column[t]{.5\textwidth}
Hier ist ein Text.
\column[t]{.5\textwidth}

\begin{tikzpicture}[gnuplot]
\input{Gnuplotoutput.tex}
\end{tikzpicture}

\end{columns}
\end{frame}

\end{document}

M. Niedermair

unread,
Jun 25, 2011, 7:47:35 AM6/25/11
to
Hallo Gudrun,

> mit Gnuplot45 gibt es das Terminal lua tikz, wobei man einen .tex-
> Output bekommt, den man dann in eine tikzpicture-Umgebung einbauen
> kann.
> Dazu habe ich einige Fragen:

> 2. Anbei habe ich ein Minimalbeispiel angefügt. Mir gelingt es nicht,
> das Bild Gnuplotoutput richtig in Beamer-TeX zu skalieren. Es sollte
> 0.5\textwidth haben und die Schriftart sollte entsprechend kleiner
> werden, damit es auf die Seite paßt.

solche Beispiele lasse ich immer extern übersetzen und binde nur das
fertige PDF ein.
Egal ob Bildchen mit GNUPlot, PSTricks, Graphvis dot, etc. Immer das
selbe Verfahren.
1) PDF erzeugen lassen
2) weißen Rand, z.B. mit pdfcrop abschneiden
3) über \includegraphics[width=.5\linewidth]{bild_1234} einbinden.

Der Vorteil ist, das Bild (hier PDF) lässt sich unabhängig vom erzeugten
Prozess beliebig skalieren und die "Berechnungszeit" für das Bild fällt
nur einmal an und nicht bei jedem LaTeX-Lauf.

Auch können hier bei den "Bildchen" Pakete verwendet werden, die evtl.
im Hauptdokument stören oder z.B: wie PSTricks latex und gs voraussetzen.

Gruß
Michael

Oliver Jennrich

unread,
Jun 25, 2011, 4:43:08 PM6/25/11
to
"M. Niedermair" <m_...@gmx.de> writes:

> Hallo Gudrun,
>
>> mit Gnuplot45 gibt es das Terminal lua tikz, wobei man einen .tex-
>> Output bekommt, den man dann in eine tikzpicture-Umgebung einbauen
>> kann.
>> Dazu habe ich einige Fragen:

>> 2. Anbei habe ich ein Minimalbeispiel angef�gt. Mir gelingt es nicht,


>> das Bild Gnuplotoutput richtig in Beamer-TeX zu skalieren. Es sollte
>> 0.5\textwidth haben und die Schriftart sollte entsprechend kleiner

>> werden, damit es auf die Seite pa�t.
>
> solche Beispiele lasse ich immer extern �bersetzen und binde nur das
> fertige PDF ein.

Das ist h�ufig eine gute Idee, wenn man es denn richtig macht...

> Egal ob Bildchen mit GNUPlot, PSTricks, Graphvis dot, etc. Immer das
> selbe Verfahren.
> 1) PDF erzeugen lassen

> 2) wei�en Rand, z.B. mit pdfcrop abschneiden
> 3) �ber \includegraphics[width=.5\linewidth]{bild_1234} einbinden.

... und nicht so. Das erzeugt ggfls. inkonsistente Zeichengr��en,
Strichdicken etc. Solche Grafiken m�ssen in der Entwurfsgr��e bereits
zum finalen Layout passen und werden dann *ohne* Skalierungselemente
eingebunden.

Ausserdem mu� man bei der Methode sicherstellen, dass
alle verwendeten Grafiken die gleiche Pr�ambel sehen (damit �berall die
gleichen Schriften verwendet werden) - aber das l��t sich mit einem
'convenience package' in den Griff bekommen.

> Der Vorteil ist, das Bild (hier PDF) l�sst sich unabh�ngig vom
> erzeugten Prozess beliebig skalieren

*Das* ist kein Vorteil, sondern ein Nachteil. Und zwar ein gewaltiger.

--
Space - The final frontier

M. Niedermair

unread,
Jun 26, 2011, 3:15:16 AM6/26/11
to
Guten Morgen,

> ... und nicht so. Das erzeugt ggfls. inkonsistente Zeichengrößen,
> Strichdicken etc. Solche Grafiken müssen in der Entwurfsgröße bereits


> zum finalen Layout passen und werden dann *ohne* Skalierungselemente
> eingebunden.

das funktioniert aber in den seltensten Fällen.
Folgendes Beispiel:
Im Unterricht sollen die Schüler ein Formular in A4 erstellen. Damit
diese eine Vorstellung haben, wie dieses aussehen soll, wird eine
Variante eingebunden und auf die Textbreite verkleinert.

Natürlich ist dann die Schrift entsprechend verkleinert, dies stört in
keinster Weise und erhält sogar den Bezug zur realen Vorlage.

Ein anderes Beispiel: Ich verwende oft UML-Diagramme, die teilweise sehr
groß werden können. Diese werden extern, teils aus dem Source-Code
generiert und stehen als PDF zur Verfügung. Beschränke ich mich bei der
Erstellung auf die Entwurfsgröße und lege z.B. 10pt fest, so erhalte ich
nur einen kleinen Teil, von dem, was ich darstellen will.

> Ausserdem muß man bei der Methode sicherstellen, dass
> alle verwendeten Grafiken die gleiche Präambel sehen (damit überall die
> gleichen Schriften verwendet werden) - aber das läßt sich mit einem


> 'convenience package' in den Griff bekommen.

Mit einem? Nur, wenn Du sicher stellst, dass dann für alle Bereiche auch
alle Pakete eingebunden werden. Was machst Du aber, wenn sich Pakete
nicht mögen. Schon sind es mehrere Pakete.

Du schreibst, alle Grafiken sollen die gleiche Schrift haben.
Was machst Du aber, wenn Grafiken mit einem Tool erstellt werden, das
eine andere Schrift vorgibt und fest eingebunden hat. Du kannst hier
natürlich die Schrift ändern, dann ist aber für den Leser der optische
Unterschied, wenn der das Tool verwendet oder in einem Bildschirmfoto
sieht, deutlich und evtl. verwirrend.

>
>> Der Vorteil ist, das Bild (hier PDF) lässt sich unabhängig vom


>> erzeugten Prozess beliebig skalieren
>
> *Das* ist kein Vorteil, sondern ein Nachteil. Und zwar ein gewaltiger.

Das mag evtl. auf ein Beispiel passen, gerade wenn die erstelle Grafik
kleiner ist, als die Textbreite, nicht aber auf ein breites Spektrum.

Gudrun

unread,
Jun 26, 2011, 9:01:44 AM6/26/11
to
On 25 Jun., 21:43, Oliver Jennrich <oliver.jennr...@gmx.net> wrote:


> Das ist häufig eine gute Idee, wenn man es denn richtig macht...

Wie macht man es denn richtig?


>
> > Egal ob Bildchen mit GNUPlot, PSTricks, Graphvis dot, etc. Immer das
> > selbe Verfahren.
> > 1) PDF erzeugen lassen

> > 2) weißen Rand, z.B. mit pdfcrop abschneiden
> > 3) über \includegraphics[width=.5\linewidth]{bild_1234} einbinden.


>
> ... und nicht so. Das erzeugt ggfls. inkonsistente Zeichengrößen,

> Strichdicken etc. Solche Grafiken müssen in der Entwurfsgröße bereits


> zum finalen Layout passen und werden dann *ohne* Skalierungselemente
> eingebunden.

Genau. Der oben beschriebene Weg war bisher auch mein Standardweg. Da
haben aber oftmals die Schriftart und die Größe nicht gestimmt, weil
ich es dann doch wieder runterskalieren mußte. Deswegen dachte ich,
probierst es einmal mit dem Tikz-Terminal in Gnuplot. Aber ich
beherrsche es noch nicht richtig.
>
> Ausserdem muß man bei der Methode sicherstellen, dass
> alle verwendeten Grafiken die gleiche Präambel sehen (damit überall die
> gleichen Schriften verwendet werden) - aber das läßt sich mit einem


> 'convenience package' in den Griff bekommen.

Was ist denn bitte das convenience package?
Oliver, wie ist denn bitte dein Weg?
Generell denke ich Gnuplot ist eine feine Sache. Ich komme von Matlab
und möchte auf keinen Fall mit Matlab mehr Graphiken erstellen.

Vielen Dank für Dein Kommentar.
Gruß
Gudrun

Matthias Pospiech

unread,
Jun 26, 2011, 9:30:25 AM6/26/11
to
Am 26.06.2011 15:01, schrieb Gudrun:

> Was ist denn bitte das convenience package?
> Oliver, wie ist denn bitte dein Weg?
> Generell denke ich Gnuplot ist eine feine Sache. Ich komme von Matlab
> und möchte auf keinen Fall mit Matlab mehr Graphiken erstellen.

Ich komme auch von Matlab und würde nur ungerne mit gnuplot graphen
erstellen (was ich auch kenne). Aber abgesehen davon kannst du auch
matlab graphen nach tikz exportieren, oder Schriften in eps durch LaTeX
Schriften ersetzen (siehe
http://www.matthiaspospiech.de/blog/2010/10/11/matlab-figures-solving-export-problems/3/)

Ansonsten würde ich direkt pgfplots verwenden.

Oliver Jennrich

unread,
Jun 26, 2011, 4:10:18 PM6/26/11
to
"M. Niedermair" <m_...@gmx.de> writes:

> Guten Morgen,
>


>> ... und nicht so. Das erzeugt ggfls. inkonsistente Zeichengr��en,

>> Strichdicken etc. Solche Grafiken m�ssen in der Entwurfsgr��e bereits


>> zum finalen Layout passen und werden dann *ohne* Skalierungselemente
>> eingebunden.
>

> das funktioniert aber in den seltensten F�llen.

Das funktioniert in allen F�llen, die mir bisher so untergekommen sind.

> Folgendes Beispiel:
> Im Unterricht sollen die Sch�ler ein Formular in A4 erstellen. Damit


> diese eine Vorstellung haben, wie dieses aussehen soll, wird eine
> Variante eingebunden und auf die Textbreite verkleinert.
>

> Nat�rlich ist dann die Schrift entsprechend verkleinert, dies st�rt in
> keinster Weise und erh�lt sogar den Bezug zur realen Vorlage.

Na also. Da wird also die Grafik in der *korrekten* Entwurfsgr��e
eingebunden, und die fertige PDF-Datei dann skaliert eingebunden.

>
> Ein anderes Beispiel: Ich verwende oft UML-Diagramme, die teilweise

> sehr gro� werden k�nnen. Diese werden extern, teils aus dem
> Source-Code generiert und stehen als PDF zur Verf�gung. Beschr�nke ich
> mich bei der Erstellung auf die Entwurfsgr��e und lege z.B. 10pt fest,


> so erhalte ich nur einen kleinen Teil, von dem, was ich darstellen
> will.

Dann legst du halt eine andere Schriftgr��e fest. Freies skalieren der
Diagramme f�hrt nicht zu einer festen Schriftgr��e, sondern zu einer
bunten Mischung von Schriftgr��en, wie es gerade passt.

>
>> Ausserdem mu� man bei der Methode sicherstellen, dass

>> alle verwendeten Grafiken die gleiche Pr�ambel sehen (damit �berall die
>> gleichen Schriften verwendet werden) - aber das l��t sich mit einem


>> 'convenience package' in den Griff bekommen.
>

> Mit einem? Nur, wenn Du sicher stellst, dass dann f�r alle Bereiche


> auch alle Pakete eingebunden werden. Was machst Du aber, wenn sich

> Pakete nicht m�gen.


> Schon sind es mehrere Pakete.

Ja, und? Das Problem hast du doch ohnehin. Auch wenn du die Grafiken nicht in
korrekter Entwurfsgr��e erzeugts, willst du doch wenigstens die
Schriftfamilien konsistent halten - also mu�t du doch f�r jedes Dokument
sicherstellen, dass die Grafiken die richtigen Schriftarten bekommen.

> Du schreibst, alle Grafiken sollen die gleiche Schrift haben.
> Was machst Du aber, wenn Grafiken mit einem Tool erstellt werden, das
> eine andere Schrift vorgibt und fest eingebunden hat.

Tief seufzen, zum Telefonh�rer (bze. zur Email) greifen und den Erzeuger
einnorden. Wenn die Grafik in einem vern�nftigen Format vorliegt (also
nicht gerade JPG) zur Not via AI->Inkskape->tkz/pgf bearbeiten.

> Du kannst hier nat�rlich die Schrift �ndern, dann ist aber f�r den


> Leser der optische Unterschied, wenn der das Tool verwendet oder in
> einem Bildschirmfoto sieht, deutlich und evtl. verwirrend.

Fotos sind eine ganz andere Geschichte. Da erwartet kein Leser
Konsistenz. Aber wenn in einem technischen Dokument f�r die
Achsenbeshriftungen wild durcheinander Arial, Times New Roman und DIN
verwendet werden, kriege ich Pickel.

>>> Der Vorteil ist, das Bild (hier PDF) l�sst sich unabh�ngig vom


>>> erzeugten Prozess beliebig skalieren
>>
>> *Das* ist kein Vorteil, sondern ein Nachteil. Und zwar ein
>> gewaltiger.
>
> Das mag evtl. auf ein Beispiel passen, gerade wenn die erstelle Grafik
> kleiner ist, als die Textbreite, nicht aber auf ein breites Spektrum.

Auch dann willst du aber eigentlich konistent z.B. 6pt verwenden, und
nicht je nach 'form factor' 6.3pt, 4.9 pt, 7.1pt und 5.8 pt.

Oliver Jennrich

unread,
Jun 26, 2011, 4:40:16 PM6/26/11
to
Gudrun <besten...@gmail.com> writes:

> On 25 Jun., 21:43, Oliver Jennrich <oliver.jennr...@gmx.net> wrote:

> Was ist denn bitte das convenience package?
> Oliver, wie ist denn bitte dein Weg?

1) (Fast) alle Pr嚙窮mbel-anweiseungen, die ich im Hauptdokument ben嚙緣ige
in einem 'convenience style' verpacken. Darin solten mindestens die
verwendeten Schriftarten auftauchen, aber oftmals kann man da alles
hineinschmei嚙箴n:

mystyle.sty:

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage{amsmath} % More math formatting
\usepackage{amssymb}
\usepackage{graphicx} % Include graphics
\usepackage{tgtermes} % use termes instead

\usepackage{csquotes}
\usepackage[english]{babel}
\usepackage{blindtext}

% The prescribed page layout. Ugh.
\usepackage[%
paper=a4paper%
,lmargin=2cm%
,rmargin=2cm%
,tmargin=2.5cm%
,bmargin=2.5cm%
]{geometry}


Im Hauptdokument
einfach \usepackage{mystyle} verwenden.

In gnuplot die terminal Gr嚙踝蕭e passend (zum Textlayout) w嚙篁len und den
'convenience style' einbinden sowie die Schriftfamilie w嚙篁len, also z.B.

set term tikz size 5in,3in standalone header "\\usepackage{mystyle}"
font "\\rmfamily,10"


Ausgabedatei w嚙篁len (via set out "myplot.tex" ) und plotten lasen. Ausgabedatei
schlie嚙箴n (set out). Danach kann man die erzeugte Datei durch PDFLaTeX
laufen lassen und die erzeugte PDF-Datei direkt im Hauotdokument per

\includgraphics{myplot}

einbinden.


Wenn man das Problem hat, Grafiken f嚙緝 mehr als ein Mutterdokument
erstellen zu m嚙編sen, (z.B. f嚙緝 ein Paper und die Hausbrosch嚙緝e), die
verschiedene Layout-anforderungen haben (TimesNewRoman und Arial), dann
kann man z.B. "mystyle" und "\\rmfamily,10" per Umgebungsvariable in
einem Makefile setzen lassen (lohnt sich nur bei wirklich komplexen
Problemen) oder man setzt die set term... Anweisung in eine eigene
Datei, die per 'call' aus dem Gnuplot-Skript aufgerufen wird:

set xlabel "bla"
set ylabel "blubb"

# more set stuff

call "tikz-term.gnu"

set out "myplot.tex"
plot sin(x)

set out

dann muss man 'nur' das tikz-term.gnu 嚙緯dern (bzw. erzeugen
lassen). Alternativ kann man das auch (ohne call) mit der .gnuplot
bzw. GNUPLOT.INI l嚙編en.

0 new messages