Это продолжениеУкажите радиус дуги с помощью pgfplots и направление оси cs? Если я хочу изменить MWE на следующее:
\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}
Как мне указать радиус дуги в системе координат оси? То, что я уже пробовал, было решением, приведенным вИзвлечь координаты x, y произвольной точки в TikZс использованием \pgfextractx
. В моем случае это приводит к неправильным длинам.
решение1
Значения системы координат осей теряются после \end{axis}
. Это означает, что вы можете получить доступ только к именованным узлам (даже axis cs
здесь недоступно).
Есть два решения:
Во-первых, вы можете синхронизировать единицы длины, используемые осью и вашим изображением, например, используя x=1cm, y=1cm
в оси и в tikzpicture
. Ось будет выглядеть по-разному, поскольку это переопределяет стратегии масштабирования.
В качестве альтернативы можно попытаться вспомнить запрошенное количество. Один из способов сделать это может быть
\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}
Моя идея заключается в оценке axis direction cs
с помощью макроса \pgfplotspointaxisdirectionxy
, затем я получаю вычисленные координаты X и Y и запоминаю их в двух глобальных макросах. Они используются позже.