Pgfplots extremos - Melhore a resolução do gráfico polar 3D e evite "capacidade do TeX excedida"

Pgfplots extremos - Melhore a resolução do gráfico polar 3D e evite "capacidade do TeX excedida"

Então eu tenho esse gráfico polar 3D descrevendo o padrão de radiação de uma antena, gerado com os dados exportados do programa de simulação. O pico no meio é a principal característica do padrão de radiação, mas deveria ser maisarredondado.

Isto é causado pelo fato de que a resolução angular máxima é de 3 graus (os eixos x e y estão em graus). Uma resolução menor (2 ou 1 grau) causa o TeX capacity exceedederro.

No entanto, ficarei feliz em melhorar a resolução apenas nas proximidades do pico (-15 <phi, theta <15), mas estou tendo dificuldades com os arquivos de dados.

insira a descrição da imagem aqui

O MWE é o seguinte:

\documentclass{standalone}

\usepackage{pgfplots,siunitx}
\usepgfplotslibrary{dateplot,polar,units,external}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
        colorbar,
        data cs=polar,
        ymin=-50, ymax=50,
        xmin=-50, xmax=50,
        zmin=0, zmax=31,
        xlabel={$\phi$},
        x unit=\si{\degree},
        ylabel={$\theta$},
        y unit=\si{\degree},
        zlabel={Directivity},
        z unit=\si{\dB},        
        point meta min=0, point meta max=31,
        unit vector ratio*=1 1 2,
        z buffer=sort,
        view={45}{30},
        width=20cm
        ]
\addplot3[surf, fill=white, mesh/ordering=y varies, mesh/rows=61] %
table[x index={1},y index={0},z index={2}]{8x8-ful-arr-good-3.txt};
\end{axis}
\end{tikzpicture}
\end{document}

e os arquivos de dados são:

Estou procurando uma forma de melhorar o gráfico na região desejada usando pgfplots. Existe uma maneira de combinar os dois arquivos?

Responder1

Você pode filtrar pontos desnecessários por meio de x filtere/ou y filter. Para manter a estrutura da malha intacta, é necessário respeitar dois itens:

  1. certifique-se de atribuirunbounded coords=jump
  2. certifique-se de que os pontos que devem ser descartados recebam "nan" (enãoum valor vazio).

A violação de qualquer um desses itens destruiria a estrutura da malha.

Aqui está o que eu recebo:

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\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,
        x filter/.code={%
            % PHI:
            \ifdim-15pt>#1pt
                \def\pgfmathresult{nan}%
            \fi
        },
        y filter/.code={%
            % THETA
            \ifdim#1pt>15pt
                \def\pgfmathresult{nan}%
            \fi
        },
        unbounded coords=jump,
        ]
\addplot3[surf, fill=white, mesh/ordering=y varies, mesh/rows=37] table[x index={1},y index={0},z index={2}]{polar.dat};
\end{axis}
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Algumas notas:

  1. Eu usei seu arquivo de dados dePgfplots fecha caminhos no gráfico polar.
  2. Parece x filternão ter efeito ... você pode querer ajustar essas coisas com base no seu arquivo de dados.
  3. Os filtros no meu exemplo funcionam por meio de primitivas TeX, ou seja, por meio de \ifdim<dimension1> <operation> <dimension2>. Como os números neste contexto não têm dimensão, tenho que acrescentar “pt” artificialmente. Essa abordagem restringiu a precisão e o intervalo de números <16384, mas funciona para esta imagem.
  4. \if<condition> \else \fié a primitiva TeX para condicionais e \def\pgfmathresult{nan}substitui o resultado por "nan".
  5. Há um buraco em alguma fatia e suspeito que sua condição "(-15 <phi, theta <15)" possa precisar de alguma modificação - seja porque usei o arquivo de dados errado ou porque ele realmente precisa de argumentos diferentes.

Referências: consulte o manual do pgfplots, especialmente a documentação do unbounded coords.

informação relacionada