在下图中,我想将 和 叠加xticklabel
$a$
。yticklabel
$f(a)$
是否beamer
可以叠加刻度标签?
如果不可能的话,我可以将 de 标签放置为节点,但在这种情况下,xticklabes
和yticklabes
中的默认位置是什么pgfplots
?谢谢。
\documentclass{beamer}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis x line=middle,
axis y line=middle,
xtick={1},
xticklabels={$a$},
ytick={1},
yticklabels={$f(a)$},
]
\addplot+[domain=0:1.5, mark=none, smooth] {x^2} node[anchor=south] {$f(x)$};
\coordinate (O) at (0,0);
\coordinate (A) at (1,1);
\fill (A) circle (1.2pt);
\draw[gray, dotted] (A) -- (A|-O);
\draw[gray, dotted] (A) -- (A-|O);
\end{axis}
\end{tikzpicture}
\end{document}
答案1
你的情节目前有两个问题:
- 剪切会删除函数的名称
f(x)
(并会删除您放置在外面的任何节点)。为了避免这种情况,请添加clip=false
到环境选项中axis
。 - s
coordinate
目前是在tikzpicture
维度中定义的,而不是在环境的坐标系中定义的axis
。(0,0)
用(axis cs:0,0)
和(1,1)
替换(axis cs:1,1)
。然后就会出现灰色虚线。
如果我理解正确的话,您希望标签逐帧逐渐出现。我认为这不能直接pgfplots
配合使用beamer
,因此您需要\node
和\only
命令。
绘图在不同的帧中大小不同,因此会跳跃。因此我们必须明确设置边界框,使其在所有帧中都包含绘图。
以下输出是由以下代码生成的。
\documentclass{beamer}
\usepackage{pgfplots}
\setbeamertemplate{navigation symbols}{} % Has anyone ever used these to navigate?
\begin{document}
\begin{frame}
\begin{tikzpicture}
\begin{axis}[
axis x line=middle,
axis y line=middle,
xtick={1},
xticklabels={},
ytick={1},
yticklabels={},
clip=false
]
\addplot+[domain=0:1.5, mark=none, smooth] {x^2} node[anchor=south] {$f(x)$};
\coordinate (O) at (axis cs:0,0);
\coordinate (A) at (axis cs:1,1);
\fill (A) circle (1.2pt);
\draw[gray, dotted] (A) -- (A|-O);
\draw[gray, dotted] (A) -- (A-|O);
\only<2->{\draw (axis cs:1,-0.03) node[below]{$a$};}
\only<3->{\draw (axis cs:-0.0164,1) node[left]{$f(a)$};}
\end{axis}
\useasboundingbox (-1,-1) rectangle (current axis.above north east);
\end{tikzpicture}
\end{frame}
\end{document}
编辑:这是另一种依赖于pgfplots
定位标签的解决方案。只要可以通过宏参数化绘图,它可能比上面的解决方案更好。它仍然需要\useasboundingbox
避免绘图跳跃。
\documentclass{beamer}
\usepackage{pgfplots}
\setbeamertemplate{navigation symbols}{} % Has anyone ever used these to navigate?
\begin{document}
\newcommand\xlabel{} % Check whether definable and initialize
\newcommand\ylabel{} % Check whether definable and initialize
\begin{frame}
\only<2->{\renewcommand\xlabel{$a$}}
\only<3->{\renewcommand\ylabel{$f(a)$}}
\begin{tikzpicture}
\begin{axis}[
axis x line=middle,
axis y line=middle,
xtick={1},
xticklabels={\xlabel},
ytick={1},
yticklabels={\ylabel},
clip=false
]
\addplot+[domain=0:1.5, mark=none, smooth] {x^2} node[anchor=south] {$f(x)$};
\coordinate (O) at (axis cs:0,0);
\coordinate (A) at (axis cs:1,1);
\fill (A) circle (1.2pt);
\draw[gray, dotted] (A) -- (A|-O);
\draw[gray, dotted] (A) -- (A-|O);
\end{axis}
\useasboundingbox (-1.3,-1) rectangle (current axis.above north east);
\end{tikzpicture}
\end{frame}
\end{document}