以坐标系单位指定圆弧半径

以坐标系单位指定圆弧半径

这是用 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}

如何在轴坐标系中指定圆弧半径?我已经尝试过的解决方案是提取 TikZ 中任意点的 x,y 坐标使用\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坐标并将它们记住两个全局宏。这些稍后会用到。

相关内容