Problem mit TikZ/pgf-Plots und Gnuplot

Tabellen und Grafiken erstellen und anordnen


Mac-Cherony
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: Sa 30. Apr 2011, 11:39

Problem mit TikZ/pgf-Plots und Gnuplot

Beitrag von Mac-Cherony »

Guten Abend allerseits,

ich habe hier ein kleines Problem mit TikZ bzw. pgf-Plots und Gnuplot. Konkret lässt sich das mit folgendem Minimalbeispiel nachvollziehen:
\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\begin{document}

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[colormap/greenyellow,colorbar]
\addplot3[surf,samples=40] gnuplot[raw gnuplot, mesh=false]{
set pm3d;
set xtics 0;
set ytics 0;
c=1;
a=10;
b=10;
p=-1;
K=((16*a**2)/(c*pi**3))*(-p);
Sum(i,x,y)=K*(((-1)**(0.5*((2*i-1)-1)))*(1-((cosh(((2*i-1)*pi*y)/(2*a)))/(cosh(((2*i-1)*pi*b)/(2*a)))))*((cos(((2*i-1)*pi*x)/(2*a)))/((2*i-1)**3)));
u(i,x,y)=(i==0)?0:u(i-1,x,y)+Sum(i,x,y);
splot [-a:a] [-b:b] u(15,x,y)};
\end{axis}
\end{tikzpicture}
\caption{So soll es nicht aussehen...}
\end{figure}

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[colormap/greenyellow,colorbar]
\addplot3[surf,domain=0:360,samples=40]
{sin(x)*sin(y)};
\end{axis}
\end{tikzpicture}
\caption{...aber so soll es sein!!!}
\end{figure}

\end{document}
Berechnung über Gnuplot scheint Problemlos zu funktionieren, allerdings habe ich versucht den Stil analog zu Beispielen aus dem pgf-Plots-Manual zu verändern. Daran bin ich jedoch sang- und klanglos gescheitert. Letztendlich möchte ich vorerst ein Gitter erzeugen, wie es in Abbildung 2 im Minimalbeispiel dargestellt ist. Weiß hier vielleicht Jemand weiter?

Viele Grüße

Mac-Cherony

edit: ich habe die pdf-Datei noch angehängt
Dateianhänge
Beispiel.pdf
(94.54 KiB) 371-mal heruntergeladen

Mac-Cherony
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: Sa 30. Apr 2011, 11:39

Beitrag von Mac-Cherony »

Soooo, mittlerweile habe ich ein bisschen weiter "rumprobiert" und mein Code sieht mittlerweile so aus:
\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\begin{document}

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[colormap/greenyellow,colorbar, view={0}{90}]
\addplot3[raw gnuplot] gnuplot[surf,mesh/check=false,samples=100]{
c=1e-5;
a=100e-6;
b=20e-6;
p=-100000;
K=((16*a**2)/(c*pi**3))*(-p);
Sum(i,x,y)=K*(((-1)**(0.5*((2*i-1)-1)))*(1-((cosh(((2*i-1)*pi*y)/(2*a)))/(cosh(((2*i-1)*pi*b)/(2*a)))))*((cos(((2*i-1)*pi*x)/(2*a)))/((2*i-1)**3)));
u(i,x,y)=(i==0)?0:u(i-1,x,y)+Sum(i,x,y);
splot [-a:a] [-b:b] u(20,x,y)};
\end{axis}
\end{tikzpicture}
\caption{So soll es nicht aussehen. Es müssen noch viel mehr Datenpunkte berechnet werden...}
\end{figure}

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[colormap/greenyellow,colorbar,view={0}{90}]
\addplot3[surf,domain=0:360,samples=25]
{sin(x)*sin(y)};
\end{axis}
\end{tikzpicture}
\caption{...aber so soll es in etwa sein!!! Nur leider ist das die falsche Funktion und die ist auch nicht mit Gnuplot berechnet}
\end{figure}

\end{document}
Das hat mich meinem Ziel zwar etwas näher gebracht, aber zufrieden bin ich damit bei weitem nicht. Ich glaube in einem solchen Fall ist es wirklich einfacher, die Funtkion direkt in Gnuplot über das Postscript Terminal zu exportieren. Ich hätte es halt schön gefunden alles einheitlich mit pgf-Plots zu machen. Interessant bei meinem obigen Code finde ich übrigens, dass der Graph wieder schlechter dargestellt wird, wenn sample=500 oder sogar noch größer gesetzt wird. Es war ein reiner Glücksgriff, dass ich es mit sample=100 gestet habe und da der Graph am besten dargestellt wird.

Wenn mir hier trotzdem noch Jemand weiterhelfen möchte, kann er das gerne konkret an meinem Beispiel tun, oder wer Beispiele für 3-dimensionale Funktionen aller Art postet, die mit Gnuplot im Zusammenspiel mit pgf-Plots erstellt worden sind bin ich darüber auch sehr dankbar.

Feuersaenger

Beitrag von Feuersaenger »

Hi Mac-Cherony,

vgl. meine Antwort auf Deinen post unter http://tex.stackexchange.com/questions/ ... ts-gnuplot

offenbar bist Du ueber einen bug in pgfplots gestolpert (sorry dafuer). Ich hoffe, der tip dort hilft Dir weiter (explizit samples und samples y in pgfplots auf dasselbe setzen wie set isosamples=<x>,<y> in dem raw gnuplot code)

Mit liebem Gruss

Christian

Mac-Cherony
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: Sa 30. Apr 2011, 11:39

Beitrag von Mac-Cherony »

Hallo Christian,

vielen Dank für deine Hilfe, es hat bestens funktioniert. Und wer könnte mir bei solch einem Problem besser weiterhelfen als der Paketautor persönlich?! ;) Deswegen nicht nur Danke für die Lösung des Problems, sondern auch für die Bereitstellung eines solch umfassenden und besonders hilfreichen Paketes!!! Da können sich dann auch schonmal ein paar Bugs einschleichen ;) Wenn man aber damit arbeitet, dann zweifelt man ja zunächst erstmal an sich selbst....

herzliche Grüße
Stefan

Antworten