Eu gostaria de criar um padrão de radiação de antena na forma de um gráfico polar como este: (créditos da imagem: CA Balanis; Teoria, análise e design da antena)
O que fiz até agora foi o seguinte código (o arquivo de dados para fazer o exemplo funcionar éaqui):
\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}
mas, estranhamente, pgfplots
fecha os caminhos entre o primeiro e o último ponto, como pode ser visto pela imagem resultante:
Minhas perguntas:
- como remover os segmentos que fecham os caminhos?
- como melhorar a malha/superfície?
Esclarecimento: o arquivo de dados vem de um software de simulação, portanto não tenho como alterar a forma como os dados são gravados nele.
Responder1
Duas coisas: você precisa informar ao PGFPlots quantas linhas existem em cada bloco de dados configurando mesh/rows=37
(alternativamente, você pode inserir uma linha vazia após cada bloco de dados, mas como seu arquivo é gerado por um programa externo, isso provavelmente não é uma opção aqui). Além disso, você precisa definir mesh/ordering=y varies
, pois por padrão, PGFPlots assume que a coordenada x varia.
\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}