Метки Pgfplots переходят между слайдами проектора

Метки Pgfplots переходят между слайдами проектора

Ниже приведен MWE, демонстрирующий мою проблему. Проблема в том, как метки перемещаются по каждому слайду. Кажется, что они сначала выравниваются по правому краю, а затем центрируются для следующего слайда. Как мне сделать так, чтобы каждая метка была центрирована под отметкой на каждом слайде, чтобы диаграмма не перемещалась между слайдами.

\documentclass{beamer}

\usepackage{pgfplots}

\begin{document}


\begin{frame}{Minimal Example}

\begin{tikzpicture} 
    \begin{axis}[
        font=\tiny,
        % enlarge y limits={value=0.2,upper},
        % scaled ticks=false, 
        xticklabels={,
        \only<4>{\phantom{$\mu-3\sigma$}}   \only<4->{$\mu-3\sigma$},
        \only<3>{\phantom{$\mu-2\sigma$}}   \only<3->{$\mu-2\sigma$},
        \only<2>{\phantom{$\mu-\sigma$}}    \only<2->{$\mu-\sigma$},
        $\mu$,
        \only<2>{\phantom{$\mu+\sigma$}}    \only<2->{$\mu+\sigma$},
        \only<3>{\phantom{$\mu+2\sigma$}}   \only<3->{$\mu+2\sigma$},
        \only<4>{\phantom{$\mu+3\sigma$}}   \only<4->{$\mu+3\sigma$},
        },
        yticklabels={,},
        ]
\addplot[blue]  coordinates {(0,0) (0,1) (6,1) (6,0)};
\addplot[red]   coordinates {(1,0) (1,2) (5,2) (5,0)};
\addplot[green] coordinates {(2,0) (2,3) (4,3) (4,0)};

\end{axis} 
\end{tikzpicture}

\end{frame}

\end{document}

Конструкцию показа надписей между слайдами я взял отсюдарешение.

решение1

Вместо того, чтобы размещать фантом на последовательных слайдах, вы можете разместить их все только на первом слайде, а затем раскрыть последующие метки на следующих слайдах. Должно сработать следующее:

\documentclass{beamer}

\usepackage{pgfplots}

\begin{document}


\begin{frame}{Minimal Example}

\begin{tikzpicture} 
    \begin{axis}[
        font=\tiny,
        % enlarge y limits={value=0.2,upper},
        % scaled ticks=false, 
        xticklabels={,
        \only<1>{\phantom{$\mu-3\sigma$}}   \only<4->{$\mu-3\sigma$},
        \only<1>{\phantom{$\mu-2\sigma$}}   \only<3->{$\mu-2\sigma$},
        \only<1>{\phantom{$\mu-\sigma$}}    \only<2->{$\mu-\sigma$},
        $\mu$,
        \only<1>{\phantom{$\mu+\sigma$}}    \only<2->{$\mu+\sigma$},
        \only<1>{\phantom{$\mu+2\sigma$}}   \only<3->{$\mu+2\sigma$},
        \only<1>{\phantom{$\mu+3\sigma$}}   \only<4->{$\mu+3\sigma$},
        },
        yticklabels={,},
        ]
\addplot[blue]  coordinates {(0,0) (0,1) (6,1) (6,0)};
\addplot[red]   coordinates {(1,0) (1,2) (5,2) (5,0)};
\addplot[green] coordinates {(2,0) (2,3) (4,3) (4,0)};

\end{axis} 
\end{tikzpicture}

\end{frame}

\end{document}

решение2

Чтобы остановить все эти наезды, вы можете просто заключить график в окружение overlayarea. Второй аргумент позволит вам контролировать вертикальное позиционирование. Вот так:

\documentclass{beamer}

\usepackage{pgfplots}

\begin{document}
\begin{frame}{Minimal Example}
\begin{overlayarea}{\textwidth}{.7\textheight}
\begin{tikzpicture}
    \begin{axis}[
        font=\tiny,
        xticklabel style={text depth=0pt},
        % enlarge y limits={value=0.2,upper},
        % scaled ticks=false,
        xticklabels={,
        \only<4->{$\mu-3\sigma$},
        \only<3->{$\mu-2\sigma$},
        \only<2->{$\mu x-\sigma$},
        $\mu$,
        \only<2->{$\mu+\sigma$},
        \only<3->{$\mu+2\sigma$},
        \only<4->{$\mu+3\sigma$},
        },
        yticklabels={,},
        ]
\addplot[blue]  coordinates {(0,0) (0,1) (6,1) (6,0)};
\addplot[red]   coordinates {(1,0) (1,2) (5,2) (5,0)};
\addplot[green] coordinates {(2,0) (2,3) (4,3) (4,0)};

\end{axis}
\end{tikzpicture}
\end{overlayarea}
\end{frame}

\end{document}

введите описание изображения здесь

Связанный контент