图像中心南侧的 pgf-plot 节点

图像中心南侧的 pgf-plot 节点

我使用此代码来绘制图表。

\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 非常有用(colormapquiver等),但它使我们失去控制,或者难以控制。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}

相关内容