PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tikz in Latex benutzen, Funktionen plotten



zac
06-11-2011, 16:27
Hallo,

ich würde gerne einfache Funktion in Latex plotten. Zum Beispiel:


\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{tikz}

% GNUPLOT required
\begin{document}
\pagestyle{empty}


\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
\draw[color=red] plot[id=x] function{x}
node[right] {$f(x) =x$};
\draw[color=blue] plot[id=sin] function{sin(x)}
node[right] {$f(x) = \sin x$};
\draw[color=orange] plot[id=exp] function{0.05*exp(x)}
node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

\end{document}


Ich habe jetzt schon mehrere stunden nach einer Lösung gesucht und nicht gefunden. Das heißt Texniccenter gibt mir irgendwie ein komisches Ergebnis aus. Ich erhalte zwar ein Koordinatensystem, aber die Funktionen sind darin nicht geplottet.

Ich habe mir bereits gnu plot hier
http://www.tatsuromatsuoka.com/gnuplot/Eng/winbin/

(0001) heruntergeladen, entpackt und in C/Programme kopiert. Ich habe auch über den Miktex PackageManager gnuplottex installiert.

Kann mir bitte einer helfen, was ich noch machen muss. Ich finde nirgends eine konkrete Anleitung dafür.

mechanicus
06-11-2011, 16:46
Hi,

schaue dir bitte pgfplots an. Dieses Paket, welches auf tikz baut, vereinfacht vieles.

Gruß
Marco

zac
06-11-2011, 16:53
kannst du mir nicht sagen, was an meinem minimabeispiel falsch ist, bzw. welches package ich noch einbinden muss? Also wie ich gnuplot richtig einbinde?

Stefan_K
06-11-2011, 17:01
Ein kleines pgfplots Beispiel (http://pgfplots.net):


\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=0:2,legend pos=outer north east]
\addplot[mark=none]{sin(deg(x))};
\addplot[mark=none]{e^x};
\legend{$\sin(x)$,$\mathrm{e}^x$}
\end{axis}
\end{tikzpicture}
\end{document}

http://texblog.net/png/plot.png

Stefan

zac
06-11-2011, 17:09
d.h. ich kann auch ohne gnuplot plotten?!

Mich würde allerdings schon auch interessieren, wie ich mein Beispiel mit gnuplot kompilieren kann. Oder ist das ein zu großer Aufwand?

Stefan_K
06-11-2011, 17:13
Wo hast Du denn Dein Beispiel her?

Stefan

zac
06-11-2011, 17:19
http://www.texample.net/tikz/examples/gnuplot-basics/

mechanicus
06-11-2011, 17:34
Hi,

Stefan zeigte dir bereits ein Beispiel mit pgfplots. Wenn du gnuplot verwenden willst (was auch mit pgfplots geht), dann musst du mittels shell-escape kompilieren, so dass LaTeX das Programm gnuplot aufrufen darf.

Marco

Stefan_K
06-11-2011, 17:42
http://www.texample.net/tikz/examples/gnuplot-basics/

Und hast Du Dir auch die Kommentare dort durchgelesen? Dort stehen 41 Kommentare, dazu sehr viele GNUplot betreffend.

Stefan

cgnieder
06-11-2011, 21:57
Kann mir bitte einer helfen, was ich noch machen muss. Ich finde nirgends eine konkrete Anleitung dafür.

Dein Code funktioniert wunderbar, allerdings musst Du pdflatex auch erlauben, auf gnuplot zuzugreifen. Das heißt, Du musst das file z.B mit

pdflatex --shell-escape deinfile.tex
kompilieren.

zac
08-11-2011, 19:30
wo genau muss ich

pdflatex --shell-escape deinfile.tex

eingeben?

Bei Ausgabe - Ausgabeprofile definieren... - Argumente, die an den Compiler übergeben werden sollen:

Ist das richtig? Das habe ich gemacht, ich erhalte nun keine Fehler oder Warnungen mehr beim Kompilieren, allerdings werden die beiden Funktionen nicht im Koordinatensystem eingezeichnet?

Kann mir bitte einer helfen?

Habe ich gnuplot vielleicht nicht richtig installiert (bzw. im richtigen Ordner?)

mechanicus
08-11-2011, 19:53
Was hast du denn für ein Betriebssystem?

Mit MikTeX ist es nicht --shell-escape sonder --enable-write18

Marco

zac
08-11-2011, 20:04
Ich habe win 7

und habe es mit

--enable-write18

ausprobiert. Funktioniert aber leider nicht. Habe ich es denn überhaupt an richtiger Stelle eingegeben?

bobmalaria
08-11-2011, 20:29
hi,

ja es muss im texniccenter da rein wo steht "argumente die an den compiler übergeben werden"

dein problem ist vermutlich das gnuplot nicht gefunden wird. du hast gnuplot ja sicher "installiert" indem du dir ein zip-archiv heruntergeladen hast und dieses dann irgendwohin entpackt hast.

jetzt weiss latex leider nicht wo deine gnuplot.exe steckt. das einfachste ist nun den gnuplot ordner in die umgebungsvariablen einzutragen. also z.b. c:\gnuplot\bin, wenn im bin ordern die gnuplot.exe steckt.

wie man an die umgebunsvariablen kommt ist hier im screenshot zu sehen

http://www.dibol.de/vm/path_en.png


das ist eine liste die mit ; getrennte einträge enthält. hänge deinen pfad von gnuplot einfach hinten dran.

dann sollte gnuplot.exe überall auf deinem system gefunden werden, auch von von latex bzw. pdflatex

zac
08-11-2011, 20:34
ah, hinten dranhängen, ich probiers kurz

zac
08-11-2011, 20:38
hat nixhts gebracht.. Immer noch der gleiche effekt. Funktionen werden nicht eingezeichnet.

bobmalaria
08-11-2011, 20:40
sozusagen ein PS

um zu probieren ob es geht, öfnne einfach eine kommandozeile, also so ein dos-fesnter (eingabeaufforderung)

und gebe dort einfach

gnuplot.exe

ein. sollte das mit den umgebungsvariablen geklappt haben, sollte gnuplot starten.

eventuell ist ein ab- und wieder anmelden nötig oder ein neustart. das weiss ich nicht so genau

zac
08-11-2011, 20:51
das passiert bei mir<a href="http://img4web.com/view/BS26UF" target="_blank"><img src="http://img4web.com/tbnl/BS26UF.jpg"></a>

mechanicus
08-11-2011, 21:20
und wenn du im Terminal noch pdflatex --enable-write18 Foo.tex machst?

Also du musst schon zum Ordner wechseln und für Foo deinen Dateinamen nutzen.

Marco

bobmalaria
08-11-2011, 21:22
hi,

ja das sieht doch gut aus mit dem gnuplot.
jetzt sollte es gehen.

jetzt also zurück ins texniccenter und mal kompilieren.

gruss

zac
08-11-2011, 22:28
danke! Jetzt funktioniert alles!