Extreme pgfplots – Verbessern Sie die 3D-Polarplot-Auflösung und verhindern Sie „TeX-Kapazität überschritten“

Extreme pgfplots – Verbessern Sie die 3D-Polarplot-Auflösung und verhindern Sie „TeX-Kapazität überschritten“

Ich habe also dieses 3D-Polardiagramm, das das Strahlungsmuster einer Antenne beschreibt und mit den aus dem Simulationsprogramm exportierten Daten erstellt wurde. Der Spike in der Mitte ist das Hauptmerkmal des Strahlungsmusters, aber es sollte mehrgerundet.

Dies liegt daran, dass die maximale Winkelauflösung 3 Grad beträgt (x- und y-Achse sind in Grad angegeben). Eine geringere Auflösung (2 oder 1 Grad) verursacht den TeX capacity exceededFehler.

Allerdings würde ich die Auflösung gerne nur in der Nähe des Peaks (-15 < Phi, Theta < 15) verbessern, habe aber Probleme mit den Datendateien.

Bildbeschreibung hier eingeben

Der MWE lautet wie folgt:

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

und die Datendateien sind:

Ich suche nach einer Möglichkeit, das Diagramm im gewünschten Bereich mithilfe von pgfplots zu verbessern. Gibt es eine Möglichkeit, die beiden Dateien zu kombinieren?

Antwort1

Sie können Punkte, die Sie nicht benötigen, herausfiltern mittels x filterund/odery filter herausfiltern . Um die Netzstruktur intakt zu halten, müssen Sie dabei zwei Dinge beachten:

  1. Stellen Sie sicher, dass Sieunbounded coords=jump
  2. Stellen Sie sicher, dass Punkte, die verworfen werden sollen, "nan" erhalten (undnichtein leerer Wert).

Bei Nichtbeachtung dieser Punkte wird die Netzstruktur zerstört.

Folgendes bekomme ich:

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

Bildbeschreibung hier eingeben

Einige Notizen:

  1. Ich habe Ihre Datendatei von verwendetPgfplots schließt Pfade im Polardiagramm.
  2. Das x filterscheint keine Wirkung zu haben. Vielleicht möchten Sie das Zeug anhand Ihrer Datendatei optimieren.
  3. Die Filter in meinem Beispiel arbeiten mittels TeX-Primitiven, also mittels \ifdim<dimension1> <operation> <dimension2>. Da die Zahlen in diesem Kontext keine Dimension haben, muss ich künstlich "pt" anhängen. Dieser Ansatz hat zwar eine eingeschränkte Genauigkeit und einen Zahlenbereich < 16384, funktioniert aber für dieses Bild.
  4. \if<condition> \else \fiist das TeX-Grundelement für Bedingungssätze und \def\pgfmathresult{nan}überschreibt das Ergebnis mit „nan“.
  5. In einem Teil des Abschnitts befindet sich ein Loch und ich vermute, dass Ihre Bedingung „(-15 < phi, theta < 15)“ möglicherweise geändert werden muss – entweder, weil ich die falsche Datendatei verwendet habe oder weil wirklich andere Argumente erforderlich sind.

Referenzen: siehe das pgfplots-Handbuch, insbesondere die Dokumentation für unbounded coords.

verwandte Informationen