我使用此代码来绘制图表。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{fancybox}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,samples=200]
\addplot[blue,domain=-3:1.85] {1/(x-2) +3 };
\addplot[blue,domain=2.15:6] {1/(x-2) + 3};
\draw[red!20,dashed] (axis cs:2,-4) -- (axis cs:2,10);
\end{axis}
\node at (4.4,-0.6) {\ovalbox{one function}};
\end{tikzpicture}
\end{document}
我希望节点(例如\ovalbox{one function}
)位于图像的中心。我不知道如何自动执行此操作,因此我按照我仅通过观察来假设它是正确的方式执行此操作。可以自动将其置于中心吗?
答案1
图像定义了一个边界框,只需将文本放置在该边界框的南面。
我将其固定在北方,以便文本不会与图像重叠。
\node[anchor=north] at (current bounding box.south) {\ovalbox{one function}};
\documentclass{article}
\usepackage{pgfplots}
\usepackage{fancybox}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,samples=200]
\addplot[blue,domain=-3:1.85] {1/(x-2) +3 };
\addplot[blue,domain=2.15:6] {1/(x-2) + 3};
\draw[red!20,dashed] (axis cs:2,-4) -- (axis cs:2,10);
\end{axis}
\node[anchor=north] at (current bounding box.south) {\ovalbox{one function}};
\end{tikzpicture}
\end{document}
答案2
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,samples=200]
\addplot[blue,domain=-3:1.85] {1/(x-2) +3 };
\addplot[blue,domain=2.15:6] {1/(x-2) + 3};
\draw[red!20,dashed] (axis cs:2,-4) -- (axis cs:2,10);
\end{axis}
\node[draw,rounded corners,below=1pt] at (current axis.south) {one function};
\end{tikzpicture}
\end{document}
答案3
我建议使用普通的 TikZ 来绘制普通函数,以获得您喜欢的最佳图片,特别是在当前图片的中心南部添加一些节点。
\documentclass[tikz,border=5mm]{standalone}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[yscale=.4,xscale=.7]
\draw[->] (-3,0)--(6,0) node[below]{$x$};
\draw[->] (0,-4)--(0,10) node[left]{$y$};
\draw[blue,smooth,samples=200]
plot[domain=-3:1.85] (\x,{1/(\x-2)+3})
plot[domain=2.15:6] (\x,{1/(\x-2)+3});
\draw[red,dashed] (2,-4)--(2,10) (-3,3)--(6,3);
\path
(0,0) node[below left]{O}
(4.5,5) node[blue]{$y=3+\dfrac{1}{x-2}$}
(0,2.5) node[scale=.7,blue,below left]{$5/2$}
(5/3,0) node[scale=.7,blue,below left]{$5/3$}
(2,0) node[red,below right]{$2$}
(0,3) node[red,above left]{$3$};
\path (current bounding box.south)
node[below=5mm,draw,rounded corners]
{a function with two asymptotes};
\end{tikzpicture}
\end{document}
PS:我知道 pgfplots 非常有用(colormap
、quiver
等),但它使我们失去控制,或者难以控制。pgfplots
如果纯 TikZ 太长而无法绘制,我会使用它。
对于使用此处的答案pgfplots
:
- 应该出现数字 -2,2,4,6,8 吗?有人可能会说:“我们可以通过在
axis
环境中添加一些选项来控制外观”,但这不方便。此外,应该出现数字 5/2、5/3。 - 我选择了
[yscale=.4,xscale=.7]
让普通的 TikZ 图形与pgfplots
图形几乎大小相同的选项。因此pgfplots
自动缩放了图形。有时这很好,有时则不然。 - 删除选项后
[axis lines=middle]
,图形的外观将完全改变。我们想要5.10.15
周围有大框的数字是什么样子的?
我把所有代码放在一起进行比较。
\documentclass[border=5mm]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=200]
\addplot[blue,domain=-3:1.85] {1/(x-2) +3 };
\addplot[blue,domain=2.15:6] {1/(x-2) + 3};
\draw[red] (axis cs:2,-4) -- (axis cs:2,10);
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,samples=200]
\addplot[blue,domain=-3:1.85] {1/(x-2) +3 };
\addplot[blue,domain=2.15:6] {1/(x-2) + 3};
\draw[red!20,dashed] (axis cs:2,-4) -- (axis cs:2,10);
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}[yscale=.4,xscale=.7]
\draw[->] (-3,0)--(6,0) node[below]{$x$};
\draw[->] (0,-4)--(0,10) node[left]{$y$};
\draw[blue,smooth,samples=200]
plot[domain=-3:1.85] (\x,{1/(\x-2)+3})
plot[domain=2.15:6] (\x,{1/(\x-2)+3});
\draw[red,dashed] (2,-4)--(2,10) (-3,3)--(6,3);
\path
(0,0) node[below left]{O}
(4.5,5) node[blue]{$y=3+\dfrac{1}{x-2}$}
(0,2.5) node[scale=.7,blue,below left]{$5/2$}
(5/3,0) node[scale=.7,blue,below left]{$5/3$}
(2,0) node[red,below right]{$2$}
(0,3) node[red,above left]{$3$};
\end{tikzpicture}
\end{document}