在 groupplot 环境中定位命名节点和路径

在 groupplot 环境中定位命名节点和路径

我在使用 pgf、pgfplots 和 groupplots 库时遇到了问题。最好用一个例子来解释这个问题

\documentclass[tikz]{standalone}
\usepackage{pgfplots}

%\pgfplotsset{compat=1.12}

\begin{document}

\pgfplotsset{compat=1.12}

\usetikzlibrary{intersections}
\usepgfplotslibrary{groupplots}

\begin{tikzpicture}

\begin{groupplot}[group/group size=1 by 2]

\nextgroupplot
    \addplot {x} node[pos=0.5, name=first node]{};

    % I can do stuff with 'first node' here.
    \draw (first node) circle(5pt);

\nextgroupplot
    \addplot[name path=my plot] {x^2} node[pos=0.5, name=second node]{};

    % Of course, second node works here
    \draw (second node) circle(5pt);

    % This is not right
    \draw (first node) node {huh?} -- (second node);

\end{groupplot}

% This does work!
\draw[dotted, name path=vertical line] (first node) -- (second node);

% But this is not right
\path[name intersections={of={vertical line and my plot}}] (intersection-1) node {x};

\end{tikzpicture}   
\end{document}

姆韦

因此我的问题是:

  • 为什么first node一开始定位不正确,但是在groupplots范围之外却正确?
  • 交叉点发生了什么?文档再次编译,但位置却不正确。
  • 是否有一种连接连续情节点的首选方法\nextgroupplot?这基本上就是我想要实现的。

答案1

这是由于在轴环境中执行本地操作可能会改变比例等而引起的。

一般来说,如果你想做内部图形,你应该在环境之外做axis
在这种情况下,重要的是要认识到groupplot环境是多个环境的包装器axis。因此,你应该做你的绘图\end{groupplot}。您已经展示并弄清楚了这一点。

交叉点则是另一回事。这里的问题是每个轴都会单独改变坐标系,而交叉点库会以某种形式存储这些路径。这里似乎坐标系的比例没有更新。您可能需要以另一种方式执行此操作。

相关内容