Ich möchte ein Antennenstrahlungsmuster in Form eines Polardiagramms wie diesem erstellen: (Bildnachweis: CA Balanis; Antennentheorie, -analyse und -design)
Was ich bisher gemacht habe, ist der folgende Code (die Datendatei, die das Beispiel zum Laufen bringt, istHier):
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
data cs=polar,
% restrict x to domain=0:180,
% restrict y to domain=0:180,
ymin=-90,
ymax=90,
zmax=10.8,
]
\addplot3[surf,fill=white] table[x index={1},y index={0},z index={2}]{subarray-3d-plot-dir.csv};
\end{axis}
\end{tikzpicture}
\end{document}
aber seltsamerweise pgfplots
schließt es die Pfade zwischen dem ersten und dem letzten Punkt, wie man im resultierenden Bild sehen kann:
Meine Fragen:
- wie entferne ich die Segmente, die die Pfade schließen?
- wie kann das Netz/die Oberfläche verbessert werden?
Klarstellung: Die Datendatei stammt aus einer Simulationssoftware, daher habe ich keine Möglichkeit, die Art und Weise zu ändern, in der die Daten darin geschrieben werden.
Antwort1
Zwei Dinge: Sie müssen PGFPlots mitteilen, wie viele Zeilen jeder Datenblock enthält, indem Sie festlegen mesh/rows=37
(alternativ könnten Sie nach jedem Datenblock eine leere Zeile einfügen, aber da Ihre Datei von einem externen Programm generiert wird, ist das hier wahrscheinlich keine Option). Außerdem müssen Sie festlegen mesh/ordering=y varies
, da PGFPlots standardmäßig davon ausgeht, dass die x-Koordinate variiert.
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
data cs=polar,
ymin=-180, ymax=180,
xmin=-180, xmax=180,
zmin=-20, zmax=11,
unit vector ratio*=1 1 10,
z buffer=sort,
view={45}{30},
width=15cm
]
\addplot3[surf, fill=white, mesh/ordering=y varies, mesh/rows=37] table[x index={1},y index={0},z index={2}]{data.dat};
\end{axis}
\end{tikzpicture}
\end{document}