如何控制 tikzpicture 中曲线不同部分的外观?

如何控制 tikzpicture 中曲线不同部分的外观?

我想在 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}

相关内容