Pgfplots fecha caminhos no gráfico polar

Pgfplots fecha caminhos no gráfico polar

Eu gostaria de criar um padrão de radiação de antena na forma de um gráfico polar como este: insira a descrição da imagem aqui (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, pgfplotsfecha os caminhos entre o primeiro e o último ponto, como pode ser visto pela imagem resultante:

insira a descrição da imagem aqui

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}

informação relacionada