我在使用 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}
。您已经展示并弄清楚了这一点。
交叉点则是另一回事。这里的问题是每个轴都会单独改变坐标系,而交叉点库会以某种形式存储这些路径。这里似乎坐标系的比例没有更新。您可能需要以另一种方式执行此操作。