pgfplots 生成简单函数的意外图形

pgfplots 生成简单函数的意外图形

我想绘制一个简单的指数函数 2^x。我使用的代码如下。绘图触及 x 轴,我在该轴上设置了域的较低值,示例中为 -6。我做错了什么?

\documentclass{amsbook}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots} \pgfplotsset{compat=1.18} \usepgfplotslibrary{fillbetween}
\usepackage{tikz}
\begin{document}
\begin{figure}
\caption{$f(x) = 2^x$} \label{fig:Exp2x}
\begin{tikzpicture}
\begin{axis}[
    mark=none,
    domain= -6:2,
    samples=20,
    smooth,
    axis x line=center,
    axis y line=center,
    xlabel=$x$, xlabel style={anchor=west}]
 \addplot[thick] {2^x};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

答案1

还要添加 ymin=-.5,因此您的 ymin 不是为您的函数计算的值。完整代码:

\documentclass{amsbook}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots} \pgfplotsset{compat=1.18} \usepgfplotslibrary{fillbetween}
\usepackage{tikz}
\begin{document}
    \begin{figure}
        \caption{$f(x) = 2^x$} \label{fig:Exp2x}
        \begin{tikzpicture}
            \begin{axis}[
                mark=none,
                domain= -2:2,
                samples=50,
                smooth,
                ymin=-.5,% <--
                axis x line=center,
                axis y line=center,
                xlabel=$x$, xlabel style={anchor=west}]
                \addplot[thick] {2^x};
            \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

正确输出:

在此处输入图片描述

添加同样对于域 -4:2 您将看到预期的答案:

在此处输入图片描述

答案2

您需要定义图表中的横坐标。所选的默认位置axis lines并非您所期望的位置。

如果没有明确定义横坐标的位置,则通过绘制函数域的起点定义的点进行绘制。也就是说,在 时domain=-5:2它位于y(-5),在domain=-2:2时它位于y(-2),但在 定义 时ymin=0位于y=0,在 时ymin=-1它将位于y=0

根据这一事实,您将观察到在选定的轴线上,横轴之间的距离和ytick=1前两种情况下的距离与其他轴线之间的距离不同ytick

因此,如果你将 MWE 重写为:

\documentclass{amsbook}
\usepackage{geometry}
\usepackage{pgfplots} 
\pgfplotsset{compat=1.18}
\usepackage{tikz}

\begin{document}
    \begin{figure}
\caption{$f(x) = 2^x$} \label{fig:Exp2x}
\pgfplotsset{           % common axis settings
    width = 78mm,       % that images are parallel 
    axis lines=center,
    xlabel=$x$, xlabel style={anchor=west},
    ymin=0,             % <--- that abscisa go through y(0)
    samples=101,
    no marks,
}
    \begin{tikzpicture}
\begin{axis}[
    domain=-5:2,
            ]
\addplot +[thick] {2^x};
\end{axis}
    \end{tikzpicture} 
\quad    
    \begin{tikzpicture}
\begin{axis}[
    domain=-2:2,
            ]
\addplot +[thick] {2^x};
\end{axis}
    \end{tikzpicture}
    \end{figure}
\end{document}

结果正如你所期望的:

在此处输入图片描述

您可能将此特征pgfplots声明为错误,但在许多情况下这是需要的(例如在y(0)不存在的对数轴处,即在负无穷处)。

为了更好地理解上述内容,请在为轴选择默认样式并向grid轴添加选项时测试您的图表:

\pgfplotsset{           % common axis setings
    width = 78mm,       % that immages are parralel 
    grid,               % to see grid 
    xlabel=$x$, xlabel style={anchor=west},
    samples=101,
    no marks,
}

在这种情况下,结果是

在此处输入图片描述

相关内容