Extreme pgfplots — улучшение разрешения 3D-полярных графиков и предотвращение «превышения емкости TeX»

Extreme pgfplots — улучшение разрешения 3D-полярных графиков и предотвращение «превышения емкости TeX»

Итак, у меня есть этот 3D полярный график, описывающий диаграмму направленности антенны, сгенерированный с помощью данных, экспортированных из программы моделирования. Пик в середине — это главная особенность диаграммы направленности, но он должен быть болееокруглый.

Это вызвано тем, что максимальное угловое разрешение составляет 3 градуса (оси x и y указаны в градусах). Меньшее разрешение (2 или 1 градус) приводит к ошибке TeX capacity exceeded.

Тем не менее, я был бы рад улучшить разрешение только вблизи пика (-15 < фи, тета < 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 < фи, тета < 15)» может нуждаться в некоторой модификации — либо потому, что я использовал неправильный файл данных, либо потому, что для него действительно нужны другие аргументы.

Ссылки: см. руководство pgfplots, особенно документацию по unbounded coords.

Связанный контент