pgfplots / gnuplot: Zeichnen einer zweiparametrischen 3D-Funktion
Ich möchte eine 2-parametrische Oberflächenfunktion zeichnen
set parametric
splot cos(u)*cos(v),sin(u)*cos(v),sin(v)
(Hinweis: Wenn ich es nur in Gnuplot stecke, funktioniert es.)
Ich denke, dass spezielle Einstellungen in pgfplots für eine solche spezielle Funktion notwendig sind.
Also: Warum zeichnet das 2. Beispiel nichts?
Welche Optionen muss ich hier in pgfplots einstellen?
% arara: pdflatex: {shell: yes}
\documentclass[margin=3mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest, width=7cm}
\begin{document}
\begin{tikzpicture}
\begin{axis}[title=Works]
\addplot3[]
gnuplot{sin(x)*sin(y)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}[font=\footnotesize,]
\begin{axis}[title={Works not - what do I have to set?}]
\addplot3[]
gnuplot {
set parametric
splot cos(u)*cos(v),sin(u)*cos(v),sin(v)
};
\end{axis}
\end{tikzpicture}
\end{document}
\end{document}
Sollte etw geben. so was:
Antworten
Sie erhalten eine .gnuplotDatei, in der Sie sehen können, welcher Code an Gnuplot übergeben wird.
Für Ihren Fall bekommen Sie
set table "test.pgf-plot.table"; set format "%.5f"
set format "%.7e";; set samples 25, 25; set dummy x,y; set isosamples 25, 25; splot [x=-5:5] [y=-5:5] set parametric splot cos(u)*cos(v),sin(u)*cos(v),sin(v) ;
Wie Sie sehen können, bekommen Sie splot <domain settings> <your code>, was bedeutet, dass Gnuplot bekommt
splot ... set parametric
Das funktioniert nicht, weil nach splotund Optionen ein Funktionsausdruck vorhanden sein sollte. Sie können den Fehler von Gnuplot auch in der .logDatei sehen, heißt es
"test.pgf-plot.gnuplot" line 2: undefined variable: set
wo das setin frage ist das in set parametric.
Um dies zu beheben, können Sie den parametricSchlüssel auf der TikZ-Seite verwenden, anstatt set parametric:
% arara: pdflatex: {shell: yes}
\documentclass[margin=3mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest, width=7cm}
\begin{document}
\begin{tikzpicture}[font=\footnotesize,]
\begin{axis}[title={Works not - what do I have to set?}]
\addplot3[]
gnuplot [parametric=true] {
cos(u)*cos(v),sin(u)*cos(v),sin(v)
};
\end{axis}
\end{tikzpicture}
\end{document}
Oder Sie können verwenden raw gnuplot. In diesem Fall müssen Sie die Domäne und die Stichprobengröße im Gnuplot-Code festlegen, anstatt pgfplotssie weiterzuleiten:
% arara: pdflatex: {shell: yes}
\documentclass[margin=3mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest, width=7cm}
\begin{document}
\begin{tikzpicture}[font=\footnotesize,]
\begin{axis}[title={Works not - what do I have to set?}]
\addplot3[]
gnuplot [raw gnuplot] {
set parametric;
splot cos(u)*cos(v),sin(u)*cos(v),sin(v)
};
\end{axis}
\end{tikzpicture}
\end{document}