本文へ移動

pgfplots の対数軸

axis を semilogyaxis(y が対数)、semilogxaxis(x が対数)、loglogaxis(両方)に置き換えるか、通常の axis に ymode=log や xmode=log を指定します。

y 軸の対数目盛り

個数、誤差、周波数など、何倍という単位で増える値は、対数目盛りで見るのがいちばんです。semilogyaxis は x を線形のまま、y を対数にします。目盛りは 10 のべき乗の位置に置かれ、$10^k$ と表示されます。

対数の y 軸の指数関数的な増加

LaTeXプリアンブル: \usepackage{pgfplots}エディタで開く (新しいタブで開きます)
\begin{tikzpicture}
  \begin{semilogyaxis}[xlabel={Day}, ylabel={Cells}, grid=major]
    \addplot coordinates {(0,44) (1,120) (2,350) (3,980) (4,2700) (5,7600) (6,21000)};
  \end{semilogyaxis}
\end{tikzpicture}

このグラフで直線になるのは、1 ステップごとに同じ倍率で増え続けていることを意味します。

両軸の対数

loglogaxis は両方の軸を対数にします。$y = x^2$ のようなべき乗則は、傾きが指数に等しい直線になります。

両対数グラフのべき乗則

LaTeXプリアンブル: \usepackage{pgfplots}エディタで開く (新しいタブで開きます)
\begin{tikzpicture}
  \begin{loglogaxis}[xlabel=$n$, ylabel={Time (s)}, legend pos=north west]
    \addplot coordinates {(10,0.001) (100,0.01) (1000,0.1) (10000,1)};
    \addplot coordinates {(10,0.0001) (100,0.01) (1000,1) (10000,100)};
    \legend{$O(n)$, $O(n^2)$}
  \end{loglogaxis}
\end{tikzpicture}
Scissor LaTeX による組版: 両対数グラフのべき乗則

xmode と ymode で同じことをする

xmode=log と ymode=log は、通常の axis を対数目盛りにします。スタイルで切り替えたい場合や、グループプロットの中で便利です。

通常の軸に xmode=log

LaTeXプリアンブル: \usepackage{pgfplots}エディタで開く (新しいタブで開きます)
\begin{tikzpicture}
  \begin{axis}[xmode=log, xlabel={Frequency (Hz)}, ylabel={Gain (dB)}, ymin=-30, ymax=5]
    \addplot[blue, thick, domain=1:5, samples=60, variable=t]
      ({10^t}, {-10*log10(1 + (10^t/1000)^2)});
  \end{axis}
\end{tikzpicture}
Scissor LaTeX による組版: 通常の軸に xmode=log

数式は対数軸でも使えますが、domain と samples はデータの単位で指定します。サンプルは両端の間に均等に配置されるので、対数軸ではほとんどが最後の 1 桁に集まってしまいます。そのためこの例では、指数 t を媒介変数とする曲線を $10^1$ から $10^5$ までプロットし、サンプルが対数軸に沿って均等に並ぶようにしています。pgfplots も同じ動作です。

ほかの底

log basis y=2(または log basis x)で底を変えます。目盛りは 2 のべき乗の位置に置かれ、$2^k$ と表示されます。

y 軸の底を 2 にする

LaTeXプリアンブル: \usepackage{pgfplots}エディタで開く (新しいタブで開きます)
\begin{tikzpicture}
  \begin{semilogyaxis}[log basis y=2, xlabel={Doublings}, ymin=1, ymax=64]
    \addplot coordinates {(0,1) (1,2) (2,4) (3,8) (4,16) (5,32)};
  \end{semilogyaxis}
\end{tikzpicture}

対数軸のオプション

オプションScissor LaTeX での対応補足
semilogxaxis、semilogyaxis、loglogaxis使える
xmode=log、ymode=log使える
log basis x=b、log basis y=b使える
対数軸の ymin、ymax使える正の値を指定します。
log ticks with fixed point未対応メッセージ付きで無視され、ラベルはべき乗のままです。
対数軸の ybar stacked未対応棒は積み上げられずに重ねて描かれ、メッセージは出ません。
0 以下の値除外対数目盛りで表示できない点は除かれ、メッセージが 1 つ出ます。

TeX のインストール環境との違い

線形の軸の棒グラフは棒グラフを、すべてのオプションは pgfplots のマニュアルをご覧ください:ctan.org/pkg/pgfplots。

折れ線グラフ、グループプロット、等高線とヒートマップもご覧ください。

よくある質問

pgfplots で y 軸を対数にするにはどうすればよいですか?

axis の代わりに \begin{semilogyaxis} ... \end{semilogyaxis} を使うか、軸のオプションに ymode=log を追加します。

対数グラフにデータが表示されないのはなぜですか?

対数軸では 0 や負の値を表示できません。そのような値の点は除外され、「問題」タブにその旨が表示されます。データをずらすか、線形の軸を使ってください。

底を 2 や e にできますか?

はい。log basis y=2(または任意の正の数、たとえば log basis x=2.71828)で指定できます。

このページの例はすべて、サイトのビルド時に Scissor LaTeX で組版されています。 最終更新:2026-11-07