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前兩種情況之間的距離是不同的,因為它們是其他yticks 之間的距離。

因此,如果您將 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,
}

在這種情況下,結果是

在此輸入影像描述

相關內容