Erstellen eines Diagramms mit Gnuplot und anschließendes Einfügen in LaTeX

Erstellen eines Diagramms mit Gnuplot und anschließendes Einfügen in LaTeX

Ich bin ehrlich gesagt ratlos. Ich habe ehrlich versucht, Gnuplot und LaTeX zusammen zu verwenden, aber es scheint nie etwas Erstrebenswertes zu ergeben. Ich habe den Gnuplot-Code;

reset

set lmargin at screen 0.2;
set rmargin at screen 0.977;
set tmargin at screen 0.96;
set bmargin at screen 0.13;

# Define colour range to be consistent amongst plots
set cbrange [lowcol:highcol];


set terminal latex
set out 'psi.tex'
set termoption dash

#set title istitle;
set xlabel '$x/a$';
set ylabel '$y/a$' offset 1.7;
set contour;
set view map;
unset surface;
set cntrparam levels 8;
set isosamples 50;
unset key
unset colorbox
splot 'loop_bottom.txt' w l notitle,'loop_top.txt' w l notitle

und das Minimalpaket

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\input{psi.tex}
\end{document}

und ich bekomme etwas, das aussieht wie

Bildbeschreibung hier eingeben

Das ist irgendwie okay. Aber die Linien sind sehr körnig, ich brauche auch die halbe X-Achsengröße und „Größe auf 0,5,1 setzen“ scheint nicht zu funktionieren. Leider kann ich die Textdateien, die die Datenpunkte enthalten, nicht hier ablegen, aber gäbe es eine bessere (und leicht verständliche, die Deadline für dieses Projekt ist sehr bald) Möglichkeit, ein monochromatisches Konturdiagramm der Datenpunkte in LaTeX zu zeichnen, wie das auf dem Bild?

Antwort1

Die latexTerminaloption scheint viele einzelne Plotpunkte in die psi.texDatei zu schreiben, ohne den (mathematischen) Zusammenhang zwischen ihnen zu berücksichtigen, oder, kürzer gesagt, das Ergebnis ist kein Vektorgrafikformat. Dies führt zu körnigen Bildern, insbesondere bei Skalierung. Eine Erhöhung von isosamplesliefert bessere Grafikdateien, wenn sie in Verbindung mit „besser erhöht“ angewendet wird samples, aber dies ist keine Option, wenn eine Datendatei statt einer Funktion geplottet wird.

Meine „Lösung“ verwendet eine Funktion, da mir die Dateien im Gnuplot-Skript nicht zur Verfügung stehen.

Ich würde vorschlagen, die Terminals postscriptoder zu verwenden pdf.

reset

set lmargin at screen 0.2;
set rmargin at screen 0.977;
set tmargin at screen 0.96;
set bmargin at screen 0.13;

# Define colour range to be consistent amongst plots
# set cbrange [lowcol:highcol];



#set title istitle;
set xlabel '$x/a$';
set ylabel '$y/a$' offset 1.7;
set contour;
set view map;
unset surface;
set cntrparam levels 8;
set isosamples 200;
unset key
unset colorbox
splot sin(x*y)   
# Commented out since data file `loop_*.txt' not available
#splot 'loop_bottom.txt' w l notitle,'loop_top.txt' w l notitle

set terminal push

set terminal latex 
set out 'psi.tex'
set termoption dash
replot
set out

set terminal postscript enhanced colour
set output 'psi.eps'
replot
set out

set terminal pdf colour
set output 'psi.pdf'
replot
set out

set terminal pop

Hier kommt der LaTeXCode

\documentclass{article}
\usepackage{graphicx}
% Perhaps necessary, depending on plot symbols
\usepackage{latexsym}
\begin{document}

\input{psi}

\includegraphics[scale=0.5,angle=-90]{psi.eps}

\includegraphics{psi.pdf}


\end{document}

Gnuplot Latex-Terminalausgabe

Bildbeschreibung hier eingeben

Gnuplot-Postscript-Terminalausgabe

Bildbeschreibung hier eingeben

Antwort2

Das epslatexTerminal istvielbesser als das latexeine, und Sie können immer noch die Konsistenz mit den Schriftarten des Hauptdokuments wahren, die Sie verlieren würden, wenn Sie andere Terminals wie pdfoder verwenden postscript. Mir fällt ehrlich gesagt kein einziger Grund ein, latexanstelle von zu verwenden epslatex.

Zum Beispiel mit diesem Code

reset
set terminal epslatex
set output 'foo.tex'

set xlabel '$x/a$'
set ylabel '$y/a$' offset -1,0
set contour
set view map
unset surface
set cntrparam levels 31
set isosamples 200
unset key
unset colorbox

splot x**2-y**2
set output

Sie können das folgende Bild erhalten

Bildbeschreibung hier eingeben

Wenn Sie das Verhältnis zwischen den Achsen festlegen möchten, verwenden Sie die size ratioOption. Zum Beispiel mit

set size ratio 2

die y-Achse ist doppelt so groß wie die x-Achse. Wenn Sie die gesamte „x“-Größe des Diagramms halbieren möchten, legen Sie die Größe der gesamten Abbildung in terminalden Optionen fest. Beachten Sie dabei, dass die Standardgröße 5×3,5 Zoll² beträgt. Der folgende Code legt beispielsweise die Größe des Bilds auf 2,5×3,5 Zoll² fest.

set terminal epslatex size 2.5,3.5

verwandte Informationen