Este é um acompanhamentoEspecifique o raio de um arco com pgfplots e direção do eixo cs? Se eu quiser mudar o MWE para o seguinte:
\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}
Como posso especificar o raio do arco no sistema de coordenadas do eixo? O que eu já tentei foi uma solução dada emExtraia as coordenadas x, y de um ponto arbitrário em TikZusando \pgfextractx
. Isso leva a comprimentos errados no meu caso.
Responder1
Os valores do sistema de coordenadas dos eixos são perdidos após \end{axis}
. Isso significa que você só pode acessar nós nomeados (nem mesmo axis cs
está disponível aqui).
Existem duas soluções:
Primeiro, você pode sincronizar os comprimentos das unidades usadas pelo eixo e sua imagem, por exemplo, usando x=1cm, y=1cm
no eixo e no tikzpicture
. O eixo terá uma aparência diferente, pois anula as estratégias de dimensionamento.
Alternativamente, pode-se tentar lembrar a quantidade solicitada. Uma maneira de fazer isso pode ser
\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}
Minha ideia é avaliar axis direction cs
por meio da macro \pgfplotspointaxisdirectionxy
, então pego as coordenadas X e Y calculadas e as lembro em duas macros globais. Eles são usados mais tarde.