极端 pgfplots - 提高 3d 极坐标图分辨率并防止“超出 TeX 容量”

极端 pgfplots - 提高 3d 极坐标图分辨率并防止“超出 TeX 容量”

因此,我制作了这张描述天线辐射方向图的 3D 极坐标图,该图使用从模拟程序导出的数据生成。中间的尖峰是辐射方向图的主要特征,但它应该更圆形

这是因为最大角度分辨率为 3 度(x 轴和 y 轴以度为单位)。较小的分辨率(2 度或 1 度)会导致错误TeX capacity exceeded

然而,我很乐意仅在峰值附近(-15 <phi,theta <15)提高分辨率,但我正在努力处理数据文件。

在此处输入图片描述

MWE 如下:

\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}

数据文件为:

我正在寻找一种方法来使用 pgfplots 改进所需区域的绘图。有没有办法合并这两个文件?

答案1

x filter您可以通过和/或过滤掉不需要的点y filter。为了保持网格结构完整,您必须遵守以下两项:

  1. 确保你分配unbounded coords=jump
  2. 确保应该丢弃的点收到“nan”(并且不是空值)。

违反其中任何一项都会破坏网格结构。

以下是我得到的结果:

\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}

在此处输入图片描述

一些说明:

  1. 我使用了你的数据文件Pgfplots 在极坐标图中关闭路径
  2. 似乎x filter没有效果...您可能需要根据您的数据文件调整这些内容。
  3. 我的示例中的过滤器通过 TeX 基元(即 )工作\ifdim<dimension1> <operation> <dimension2>。由于此上下文中的数字没有维度,因此我必须人为地添加“pt”。这种方法限制了准确性和数字范围 < 16384,但它适用于此图片。
  4. \if<condition> \else \fi是条件的 TeX 原语,并\def\pgfmathresult{nan}用“nan”覆盖结果。
  5. 某个切片上有一个洞,我怀疑你的条件“ (-15 < phi, theta < 15)”可能需要一些修改 - 要么是因为我使用了错误的数据文件,要么是因为它确实需要不同的参数。

参考文献:参见 pgfplots 手册,尤其是的文档unbounded coords

相关内容