pgfplots는 간단한 함수의 예상치 못한 그래프를 생성합니다.

pgfplots는 간단한 함수의 예상치 못한 그래프를 생성합니다.

간단한 지수 함수 2^x를 플롯하고 싶습니다. 내가 사용하는 코드는 다음과 같습니다. 플롯은 도메인에 대해 더 낮은 값(예에서는 -6)을 설정한 x축에 도달합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

\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예상한 위치에 있지 않습니다.

가로좌표의 명시적인 정의된 위치가 없으면 그리기 함수 영역의 시작점으로 정의된 점을 통해 그려집니다. 즉, at domain=-5:2it lie at y(-5), at domain=-2:2it lie at y(-2), 그러나 정의 ymin=0at lie at y=0및 at ymin=-1it은 at 에 있을 것입니다 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,
}

그러한 경우 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보