Bogenradius in Koordinatensystemeinheiten angeben

Bogenradius in Koordinatensystemeinheiten angeben

Dies ist eine Fortsetzung vonRadius eines Bogens mit pgfplots und Achsenrichtung cs angeben? Wenn ich das MWE von dort wie folgt ändern möchte:

\pgfplotsset{compat=1.10}
\begin{tikzpicture}

\begin{axis}[
      xmin=-20,xmax=20,
    ]
    \addplot{x}; % not important, just to make things show up

  \end{axis}
\draw (axis cs:-16,0) arc[start angle=180, end angle=0, radius=8]; % <-- want to keep units of coordinate system here
\end{tikzpicture}

Wie kann ich den Bogenradius im Achsenkoordinatensystem angeben? Was ich bereits versucht habe, war eine Lösung inExtrahieren Sie die x- und y-Koordinate eines beliebigen Punkts in TikZmit \pgfextractx. Dies führt in meinem Fall zu falschen Längen.

Antwort1

Die Werte des Achsenkoordinatensystems gehen nach verloren \end{axis}. Das heißt, Sie können nur noch auf benannte Knoten zugreifen (nicht einmal axis csist hier verfügbar).

Es gibt zwei Lösungen:

Erstens können Sie die von der Achse und Ihrem Bild verwendeten Maßeinheiten synchronisieren, indem Sie beispielsweise x=1cm, y=1cmin der Achse und in verwenden tikzpicture. Die Achse wird anders aussehen, da hierdurch die Skalierungsstrategien außer Kraft gesetzt werden.

Alternativ könnte man versuchen, sich die gewünschte Menge zu merken. Eine Möglichkeit hierfür wäre

\documentclass{standalone}

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

\begin{document}

\begin{tikzpicture}

\begin{axis}[
      xmin=-20,xmax=20,
      extra description/.code={%
        \pgfplotspointaxisdirectionxy{8}{8}
        \pgfgetlastxy{\X}{\Y}%
        \global\let\radiusX=\X
        \global\let\radiusY=\Y
      },
    ]
    \addplot{x}; % not important, just to make things show up

    \coordinate (P) at (axis cs:-16,0);
  \end{axis}
\draw (P) arc[start angle=180, end angle=0, x radius=\radiusX, y radius=\radiusY]; % <-- want to keep units of coordinate system here
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Meine Idee ist, die Auswertung axis direction csüber das Makro durchzuführen \pgfplotspointaxisdirectionxy, dann die berechneten X- und Y-Koordinaten abzurufen und diese in zwei globale Makros einzuspeichern. Diese werden dann später verwendet.

verwandte Informationen