MatplotlibでY軸スケール(linear・log・logit・symlog)を名前で指定してプロットする方法
Matplotlibでは、plt.yscale()メソッドにスケール名を文字列で渡すだけで、Y軸のスケールを簡単に切り替えることができます。この記事では、「linear」「log」「symlog」「logit」の4種類のスケールを名前で指定して、1つの図に並べて表示する方法を解説します。
実装の手順
- figureサイズを設定し、サブプロット間の余白(パディング)を調整します。
- numpyを使ってyデータポイントを作成します。
- 同様にnumpyを使ってxデータポイントを作成します。
- plt.subplot()でインデックス1の位置にサブプロットを追加します。
- plot()メソッドでxとyのデータポイントをプロットします。
- linearスケールを適用するには、plt.yscale("linear")を使用します。
- plt.title()で現在のサブプロットにタイトルを設定します。
- 手順4〜7を、異なるインデックス・スケール名・タイトルで繰り返します。
- 最後にshow()メソッドで図を表示します。
サンプルコード
import numpy as np
import matplotlib.pyplot as plt
# 図のサイズとレイアウトを設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 0〜1の範囲に収まる正規分布の乱数データを作成
y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))
# linear(線形)
plt.subplot(221)
plt.plot(x, y)
plt.yscale('linear')
plt.title('linear')
# log(対数)
plt.subplot(222)
plt.plot(x, y)
plt.yscale('log')
plt.title('log')
# symlog(対称対数)
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthresh=0.01)
plt.title('symlog')
# logit(ロジット)
plt.subplot(224)
plt.plot(x, y)
plt.yscale('logit')
plt.title('logit')
plt.show()各スケールの特徴
- linear:通常の線形スケール。値がそのまま等間隔で表示されます。
- log:対数スケール。桁違いのデータを扱う場合に有効です。0以下の値は表示できません。
- symlog:対称対数スケール。0付近は線形、絶対値が大きい領域は対数的に表示されるため、正負両方の値を含むデータに適しています。
linthreshで線形領域の閾値を指定します。 - logit:ロジットスケール。(0, 1)の開区間にある確率のようなデータを扱うのに適しています。
実行結果

上記のコードを実行すると、2×2のグリッド状に4つのサブプロットが表示され、それぞれ異なるY軸スケールが適用されたグラフを確認できます。同じデータでもスケールによって見え方が大きく変わるため、データの性質に応じて適切なスケールを選択することが重要です。
注意: 旧バージョンのMatplotlibではlinthreshyという引数名が使われていましたが、Matplotlib 3.3以降では非推奨となり、linthreshに変更されています。新しい環境ではlinthreshを使用してください。
-
Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法
PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.
-
Matplotlibで2本の点線をプロットする方法|マーカー・線種・凡例の設定も解説
はじめに この記事では、Pythonの可視化ライブラリ「Matplotlib」を使って、2本の線を1つのグラフに描画し、それぞれに異なる線種(点線・破線)や色、太さを設定する方法を解説します。 コーディングを始める前に、まず次のコマンドでMatplotlibをインポートしておきましょう。 import matplotlib.pyplot as plt Pyplotは、MatplotlibをMATLABのように直感的に操作できるようにするためのコマンドスタイル関数のコレクションです。グラフの描画からラベル付けまで、ほとんどの操作をこのモジュール経由で行います。 アルゴリズム(処理の流れ) ステ