Ich möchte die Funktion x*y/(x^2+y^2)^2 plotten, die am Nullpunkt gegen unendlich geht. Daher möchte ich die Werte dort begrenzen, und mache das hier mit restrict z to domain:

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
restrict z to domain = -12:12,
colormap/autumn,
view/el = 45
]
\addplot3[
surf,
samples = 70,
domain = -0.5:0.5,
domain y = -0.5:0.5,
]
{x*y/(x^2+y^2)^2};
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Jedoch habe ich dann einen gezackten Rand:

Grafik der Funktion

Ich möchte ihn gern gerade abgeschnitten haben, damit es vernünftig aussieht, etwas so (mit Wolfram Alpha):

Plot mit Wolfram Alpha

Ideen, ggf. in Kombination:

  • restrict z to domain*
  • Grenzlinie plotten mit zusätzlichem Plot und etwa restrict expr to domain={rawz}{19.99:20.01}
  • z filter
  • ein dritter Plot (zwischendurch) ohne Grid, mit restrict oder z filter für ein homogenes Plateau
  • ein contour plot für das Plateau
  • die Plateau-Grenze mit z=20 machen durch parametrisierten Plot in x und y, evtl. mit fill

Kam bei den Experimenten noch nix schönes raus.

Wie kriege ich die Ränder gerade und den Plot ansehnlich, ähnlich wie im zweiten Plot?

gefragt 16 Jul '14, 21:33

stefan's gravatar image

stefan ♦♦
18.4k163148
Akzeptiert-Rate: 50%


Das clippen scheint int diesem Beispiel mit restrict z to domain* gut zu klappen.

Zum Zeichnen einer praeziseren Aussenkante kannst Du einen contour plot hinterherschieben, der nur das level 12 hat. Den kannst Du entweder nur zeichnen oder fuellen; hier ist es mit fuellung:

alt text

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
colormap/autumn,
view/el = 45
]
\addplot3[
restrict z to domain* = -12:12,
surf,
samples = 70,
domain = -0.5:0.5,
domain y = -0.5:0.5,
]
{x*y/(x^2+y^2)^2};
% the contour plot handler can *draw* a contour line, but it cannot fill:
\addplot3[
contour gnuplot={
levels={12},
labels=false,
},
samples = 70,
domain = -0.5:0.5,
domain y = -0.5:0.5,
]
{x*y/(x^2+y^2)^2};
% now we fill the contour:
\addplot3[
% 1000 is always the last entry in the colormap, i.e. point
% meta max:
/utils/exec={\pgfplotscolormapdefinemappedcolor{1000}},
draw=none,
fill=mapped color]
file {P_contourtmp0.table};
\end{axis}
\end{tikzpicture}
\end{document}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Du kannst auch das fuellen weglassen und contour gnuplot={..., draw color=black} oder so schreiben, dann haettest Du lediglich eine schwarze Umrandung.

Permanenter link

beantwortet 18 Jul '14, 15:02

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

@cfeuersaenger Hervorragend, vielen Dank! Hab das gleich als Anlass zu einem Blogpost genommen: 3D-Plots beschneiden.

(19 Jul '14, 13:55) stefan ♦♦
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×731
×298
×28
×20

gestellte Frage: 16 Jul '14, 21:33

Frage wurde gesehen: 15,481 Mal

zuletzt geändert: 19 Jul '14, 13:55

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×