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 cs
ist 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=1cm
in 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}
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.