![以坐标系单位指定圆弧半径](https://linux22.com/image/477005/%E4%BB%A5%E5%9D%90%E6%A0%87%E7%B3%BB%E5%8D%95%E4%BD%8D%E6%8C%87%E5%AE%9A%E5%9C%86%E5%BC%A7%E5%8D%8A%E5%BE%84.png)
这是用 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坐标并将它们记住两个全局宏。这些稍后会用到。