如何更新现有节点?

如何更新现有节点?

我正在绘制一个节点,之后\pause我想为该节点添加一个标签。到目前为止,我只是重新绘制了该节点,但我希望有更好的方法:

\tikzstyle{vertex}=[circle,fill=black!25,minimum size=20pt,inner sep=0pt]
\begin{figure}
 \begin{tikzpicture}[scale=1.8, auto,swap]
     \node[vertex] (v_1) at (1,2) {$v_1$};
     \pause
     \node[vertex,label={[color=blue]80:$12$}] (v_1) at (1,2) {$v_1$}; %here I have to give name, node text and position again...
\end{tikzpicture}
\end{figure}    

答案1

有两种方法可以做到这一点。

方法 1

您可以使用beamer的覆盖命令,例如\visible

\node[vertex,label={[color=blue]80:{{\visible<2>{$12$}}}}] (v_1) at (1,2) {$v_1$};

注意,{}\visible。参见这里有解释

方法 2

你可以定义一个键,比如说visible on,按照这个答案,并在你的节点的标签中使用它:

\node[vertex,label={[color=blue,visible on=<2>]80:$12$}] (v_1) at (1,2) {$v_1$};

其中visible on定义为

\tikzset{
  invisible/.style={opacity=0},
  visible on/.style={alt=#1{}{invisible}},
  alt/.code args={<#1>#2#3}{%
    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
  },
}

顺便说一句,定义 TikZ 样式时,最好使用\tikzset而不是已弃用的\tikzstyle。因此,你的样式vertex可以定义为

\tikzset{vertex/.style={circle,fill=black!25,minimum size=20pt,inner sep=0pt}}

答案2

如果您想使用原生 TikZ/beamer语法,请使用late options

代码

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
 \begin{tikzpicture}[scale=1.8, auto, swap, vertex/.style={circle, fill=black!25, minimum size=20pt, inner sep=0pt}]
     \node[vertex] (v_1) at (1,2) {$v_1$};
     \pause
     \path [late options={name=v_1,label={[color=blue]80:$12$}}];
     % or: \path (v_1) [late options={label={[color=blue]80:$12$}}];
  \end{tikzpicture}
\end{frame}
\end{document}

相关内容