我想将 pgfplots 轴内的节点连接到属于不同 tikzpicture 的节点。我可以使用轴内的叠加层来实现这一点。但是,如果我缩放包围轴的 tikzpicture,叠加层就会中断。
例如,下面的方法可以正常工作:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[remember picture]
\node (n1) {n1};
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
%\begin{tikzpicture}[remember picture, scale=0.85, transform shape]
\node (n2) {n2};
\draw[overlay, green] (n1) -- (n2);
\begin{axis}[right of=n2, name=plot, clip=false]
\addplot coordinates {(0,0) (2,3) (4,2)};
\draw[overlay, red] (n1.east) -- (axis cs:2,3);
\end{axis}
\end{tikzpicture}
\end{document}
当我在轴外的 tikzpicture 上添加一个比例参数(例如scale=0.85
使用transform shape
)(并运行 pdflatex 两次)时,红线不再从节点开始(n1)
:
如果比例是轴的参数,那么一切都会正常工作,但我想缩放整个 tikzpicture。有没有办法让它正常工作?
答案1
如右图所示,与原始长度相比,矢量幅度缩小了 0.85 倍。因此,我们可以推断缩放是在完成所需计算后应用的。这不是最好的选择,但可以手动将缩放提供给所需的键,如下所示
\documentclass{beamer}
\usepackage{tikz}
\usepackage{pgfplots}
\def\myscale{0.4}
\tikzset{myscalar/.style={
node distance=\myscale cm and \myscale cm,
every node/.style={scale=\myscale},
every axis/.style={
major tick length=0.15*\myscale cm,
minor tick length=0.1*\myscale cm,
mark options={scale=\myscale},
scale=\myscale
}
}
}
\begin{document}
\begin{frame}{Title}
\begin{tikzpicture}[remember picture]
\node (n1) {n1};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,transform shape,myscalar]
\node (n2) {n2};
\draw[overlay, green] (n1) -- (n2);
\begin{axis}[right of=n2, name=plot, clip=false]
\addplot coordinates {(0,0) (2,3) (4,2)};
\draw[overlay, red] (n1.east) -- (axis cs:2,3);
\end{axis}
\end{tikzpicture}
\end{frame}
\end{document}
人们可以在某个时间点之后\myscale
通过重新\def
调整来改变它。