単純な指数関数 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
予想どおりの場所ではありません。
横座標の位置が明示的に定義されていない場合、描画関数の定義域の始点によって定義された点を通って描画されます。つまり、 では にdomain=-5:2
ありy(-5)
、domain=-2:2
では にありますが、 では にあり、 では とy(-2)
定義すると にあります。ymin=0
y=0
ymin=-1
y=0
ytick=1
この事実によれば、選択された軸線では横軸間の距離と最初の 2 つのケースでは他の軸間の距離が異なることがわかります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,
}
このような場合の結果は