缩放的 tikzpicture 内的 pgfplots 轴 cs 节点

缩放的 tikzpicture 内的 pgfplots 轴 cs 节点

我想将 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)

without scale with scale

如果比例是轴的参数,那么一切都会正常工作,但我想缩放整个 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}

enter image description here

人们可以在某个时间点之后\myscale通过重新\def调整来改变它。

相关内容