Ich habe einen Polar-Plot in zwei Dimensionen:

Open in writeLaTeX
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
  \begin{polaraxis}[
      domain = -3600:3600,
      samples = 4000
    ]
    \addplot[blue!50!black] {1 - sin(50*x/49) - sin(8*x)};
  \end{polaraxis}
\end{tikzpicture}
\end{document}

Polar-Plot in 2d

Man sieht nicht die Umdrehungen um den Nullpunkt in nur zwei Dimensionen, denn der Plot ist nur modulo 360 Grad. Daher möchte ich die Grafik gern dreidimensional darstellen, so dass ich in der Höhe die Entwicklung des Plots mit wachsendem Winkel sehe. Wie kann man das machen?

gefragt 31 Jul '14, 14:38

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

Die Frage ist zum Archivieren gedacht, kein Support benötigt. Antworten sind jedoch sehr willkommen! Ich werde selbst einen Lösungs-Vorschlag als Antwort schreiben.

(31 Jul '14, 14:38) stefan ♦♦

Man kann x einen Umlauf nur achen lassen, also etwa von -180 bis 180, und lässt einen weiteren Parameter y schrittweise wandern. Man addiert dann y*360 zum Winkelargument, beispielsweise mit y=0, 1, 2, ... und lässt dadurch den resultierenden Winkel das entsprechende größere Intervall durchlaufen.

  • Statt polaraxis verwendet man eine normale axis-Umgebung
  • \addplot3 statt \addplot, parametrisiert in x und y statt als Funktion, y wächst in der dritten Dimension
  • y in einem passenden Bereich mit einer sample-Zahl vorgeben
  • die Option data cs=polar erlaubt polare Angabe von Koordinaten auch im Dreidimensionalen
  • ein Surface-Plot lässt sich gut ansehen, z buffer = sort ist für verdeckte Linien sinnvoll

Hier eine Umsetzung, mit der man nun sehen kann, wie die Kurve sich mit wachsendem Winkel entwickelt:

Open in writeLaTeX
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
      domain    = -180:180,
      y domain  = -19:19,
      samples y = 39,
      samples   = 100,
      z buffer  = sort,
      colormap/cool,
      grid
    ]
    \addplot3[data cs = polar, surf]
      ( {x}, {1 - sin(50*(x+360*y)/49) - sin(8*(x+360*y))}, {y} );
    \end{axis}
\end{tikzpicture}
\end{document}

Polar-Plot in 3d

Permanenter link

beantwortet 31 Jul '14, 15:01

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

Deine Antwort
Vorschau umschalten

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

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×296
×117
×20
×2

gestellte Frage: 31 Jul '14, 14:38

Frage wurde gesehen: 14,600 Mal

zuletzt geändert: 31 Jul '14, 15:01