我想在 beamer 中绘制一条曲线,以便曲线的不同部分逐一出现。
我用不同的颜色标出了不同的部分,并使用了命令 \pause 让它们逐个出现,但不起作用。下面是我使用的代码:
\documentclass[14pt]{beamer}
\usepackage{etex}
\usetheme{metropolis}
\usepackage{adjustbox}
\usepackage{tikz}
\usepackage{tikz-cd}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{overlay-beamer-styles}
\newenvironment<>{varexampleblock}[2][1.0\textwidth]{%
\setlength{\textwidth}{#1}%
\setlength{\linewidth}{\textwidth}%
\begin{actionenv}#3%
\def\insertblocktitle{#2}%
\par%
\setbeamercolor{local structure}{parent=example text}%
\usebeamertemplate{block example begin}}
{\par%
\usebeamertemplate{block example end}%
\end{actionenv}}
\newcommand\scalemath[2]{\scalebox{#1}{\mbox{\ensuremath{\displaystyle #2}}}}
\begin{document}
{
\setbeamerfont{frametitle}{size=\small}
\begin{frame}[shrink = 20]
\frametitle{Sketching Curves} \pause
\begin{varexampleblock}[20cm]{Example} \pause
$f(x)=x^2(x-1)(x-3)$
\pause
\textbf{Solution:} \pause
\begin{tikzpicture}
\begin{axis}[ymin=-7, ymax=7, axis lines=middle,
xlabel=$x$,
ylabel=$y$,
title={$y=f(x)$}
]
\addplot[ color=black, samples=100, domain=-4:0.5]{x^2*(x-1)*(x-3)};
\addplot[ color=blue, samples=100, domain=0.5:2, draw on=<2->]{x^2*(x-1)*(x-3)};
\addplot[ color=red, samples=100, domain=2:5, draw on=<3->]{x^2*(x-1)*(x-3)};
\end{axis}
\end{tikzpicture}
\end{varexampleblock}
\end{frame}
\end{document}
答案1
overlay-beamer-styles
您或许可以使用包提供的库的功能aobs-tikz
。在下面的示例中,我使用了明确的幻灯片编号,例如draw on=<2->
,这意味着只为第二张幻灯片绘制图表。使用增量叠加规范(<+->
)似乎不起作用,但我没有尝试使用您的完整代码。
\documentclass{beamer}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\begin{axis}[ymin=-7, ymax=7, axis lines=middle,
xlabel=$x$,
ylabel=$y$,
title={$y=f(x)$}
]
\addplot[ color=black, samples=100, domain=-4:0.5]{x^2*(x-1)*(x-3)};
\addplot[ color=blue, samples=100, domain=0.5:2, draw on=<2->]{x^2*(x-1)*(x-3)};
\addplot[ color=red, samples=100, domain=2:5, draw on=<3->]{x^2*(x-1)*(x-3)};
\end{axis}
\end{tikzpicture}
\end{frame}
\end{document}