pgfplot 区域的固定位置

pgfplot 区域的固定位置

我使用 pgfplots 为 beamer 演示文稿生成图形。图形放置在连续的幻灯片上。

效果很好,但图片位置在幻灯片之间略有移动,看起来不太专业。这是因为xticklabels在我的例子中,图片会上下移动。

有没有办法强制图形区域位于每张投影仪幻灯片上的相同位置?也许可以在图形区域周围添加边距?

在此处输入图片描述

我使用了创建两个重叠轴的解决方法,其中一个轴的不透明度为 0 来固定位置,但这不是一个优雅的方法。

这是一个简单的例子:

\documentclass{beamer}
\usepackage{pgfplots}
\setbeamertemplate{navigation symbols}{}
\begin{document}

\begin{frame}{Slide 1}
\begin{tikzpicture}[trim axis left, trim axis right]
\begin{axis}
\addplot coordinates {(0,1) (1,1)};
\end{axis}
\end{tikzpicture}
\end{frame}

\begin{frame}{Slide 2}
\begin{tikzpicture}[trim axis left, trim axis right]
\begin{axis}
\addplot coordinates {(0,1) (1,2)};
\end{axis}
\end{tikzpicture}
\end{frame}

\begin{frame}{Slide 3}
\begin{tikzpicture}[trim axis left, trim axis right]
\begin{axis}
\addplot coordinates {(0,1) (1,3)};
\end{axis}
\end{tikzpicture}
\end{frame}

\end{document}

答案1

您可以定义一个新键trim axis,将 的边界框设置为绘图区域的范围。请注意,如果您在单个 中tikzpicture有多个不同的环境,则此简单方法将不起作用。axistikzpicture

\tikzset{
    trim axis/.style={
        execute at end picture={
            \pgfresetboundingbox
            \path (current axis.north west) (current axis.south east);
        }
    }
}


\documentclass{beamer}
\usepackage{pgfplots}
\setbeamertemplate{navigation symbols}{}
\begin{document}
\tikzset{
    trim axis/.style={
        execute at end picture={
            \pgfresetboundingbox
            \path (current axis.north west) (current axis.south east);
        }
    }
}

\begin{frame}{Slide 1}
\begin{tikzpicture}[trim axis]
\begin{axis}
\addplot coordinates {(0,1) (1,1)};
\end{axis}
\end{tikzpicture}
\end{frame}

\begin{frame}{Slide 2}
\begin{tikzpicture}[trim axis]
\begin{axis}
\addplot coordinates {(0,1) (1,2)};
\end{axis}
\end{tikzpicture}
\end{frame}

\begin{frame}{Slide 3}
\begin{tikzpicture}[trim axis]
\begin{axis}
\addplot coordinates {(0,1) (1,3)};
\end{axis}
\end{tikzpicture}
\end{frame}

\end{document}

相关内容