
Entonces tengo este gráfico polar en 3D que describe el patrón de radiación de una antena, generado con los datos exportados del programa de simulación. El pico en el medio es la característica principal del patrón de radiación, pero debería ser másredondeado.
Esto se debe al hecho de que la resolución angular máxima es de 3 grados (los ejes xey están en grados). Una resolución menor (2 o 1 grado) provoca el TeX capacity exceeded
error.
Sin embargo, estaré encantado de mejorar la resolución sólo en las proximidades del pico (-15 < phi, theta < 15), pero tengo problemas con los archivos de datos.
El MWE es el siguiente:
\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}
y los archivos de datos son:
Estoy buscando una manera de mejorar la trama en la región deseada usando pgfplots. ¿Hay alguna manera de combinar los dos archivos?
Respuesta1
Puede filtrar puntos que no necesita mediante x filter
y/o y filter
. Para mantener intacta la estructura de malla, hay que respetar dos puntos:
- asegúrese de asignar
unbounded coords=jump
- asegúrese de que los puntos que deben descartarse reciban "nan" (ynoun valor vacío).
La violación de cualquiera de estos elementos destruiría la estructura de la malla.
Esto es lo que obtengo:
\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}
Algunas notas:
- Utilicé tu archivo de datos dePgfplots cierra caminos en la trama polar.
- Parece
x filter
no tener ningún efecto... es posible que desees ajustar esas cosas en función de tu archivo de datos. - Los filtros de mi ejemplo funcionan mediante primitivas TeX, es decir, mediante
\ifdim<dimension1> <operation> <dimension2>
. Como los números en este contexto no tienen dimensión, tengo que añadir "pt" artificialmente. Este enfoque tiene una precisión restringida y un rango de números <16384, pero funciona para esta imagen. \if<condition> \else \fi
es la primitiva TeX para condicionales y\def\pgfmathresult{nan}
sobrescribe el resultado con "nan".- Hay un agujero en algún segmento y sospecho que su condición "(-15 < phi, theta < 15)" podría necesitar alguna modificación, ya sea porque usé el archivo de datos incorrecto o porque realmente necesita argumentos diferentes.
Referencias: consulte el manual de pgfplots, especialmente la documentación para unbounded coords
.