pgfplots:通过命名坐标转移范围

pgfplots:通过命名坐标转移范围

考虑以下 MWE:我发现有趣的是,第二个tikzpicture没有第一个就无法编译,即使第二个值(A)是正在使用的值。有人能解释一下吗?

在我的实际示例中,我有一个函数图,我从中存储了一些坐标。稍后我需要在这些命名点处添加一些额外的绘图。除了将我scope用来放置东西的时间推迟到之后,还有其他方法可以做到这一点吗\end{axis}

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
  % remove this and the second tikzpicture does not compile
   \coordinate (A) at (0,0);
\end{tikzpicture}
\begin{tikzpicture}
  \begin{axis}[
    xmax=3,xmin=0,ymax=3,ymin=0
    ]
     \draw (axis cs: 0,0) -- (axis cs:3,3)
     coordinate [pos=0.4] (A)
     ;
     \fill (A) circle (2pt);

     % more this scope until after \end{axis} and we do not need
     % to have (A) defined in another image
     \begin{scope}[
       shift={(A)},
       ]
       \draw (0,0) circle (1cm);
     \end{scope}
  \end{axis}
\end{tikzpicture}

\end{document}

答案1

由于pgfplots有两个阶段的工作流程,首先收集和排队,然后执行可视化非绘图命令,如果依赖于先前的命令,则需要按正确的顺序收集这些命令。否则,它们可能会像这里发生的那样过早执行。

受(我认为)的启发,其中\pgfextra有一个类似的命令,它实际上有助于将非命令排队到现有命令中。虽然我希望它能够自动工作,因为最新版本的自动识别原始 TikZ 命令不知何故没有通过。因此,我们通过将范围放在 内来手动执行此操作。pgfplots\pgfplotsextrapgfplotspgfplots\pgfplotsextra

相关内容