Matplotlibで対数スケールのグラフにおける曲線間の領域を塗りつぶす方法
Matplotlibでは、fill_between()メソッドと対数スケール(log scale)を組み合わせることで、2つの曲線の間の領域を見やすく塗りつぶすことができます。ここでは、その具体的な手順をコード例とともに解説します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。
- numpyを使用してx、y1、y2のデータポイントを作成します。
plot()メソッドを使ってx、y1、y2のデータポイントをプロットします。fill_between()メソッドで2つの曲線の間の領域を塗りつぶします。xscale()およびyscale()メソッドで軸のスケールを対数に設定します。legend()メソッドでグラフに凡例を配置します。show()メソッドを使用して図を表示します。
コード例
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-1, 1, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label="y=sin(x)")
plt.plot(x, y2, label="y=cos(x)")
plt.fill_between(x, y1, y2, color="red", label="Area", alpha=0.3)
plt.xscale('log')
plt.yscale('log')
plt.legend(loc='lower right')
plt.show()コードのポイント
np.linspace(-1, 1, 100)により、-1から1までの範囲に100個の等間隔データポイントを生成しています。sin関数とcos関数の値をそれぞれy1、y2として計算し、2本の曲線を描画した後、fill_between(x, y1, y2)で両曲線に挟まれた領域を半透明の赤色(alpha=0.3)で塗りつぶしています。
また、plt.xscale('log')とplt.yscale('log')によってX軸・Y軸の両方を対数スケールに設定している点が重要です。これにより、値の変化幅が大きいデータでも視覚的にバランスの取れた表示が可能になります。なお、対数スケールでは0や負の値は正しく表示されないため、必要に応じてデータ範囲の調整を行ってください。
出力結果

このように、わずか数行のコードで対数スケールのグラフ上に曲線間の領域を美しく塗りつぶすことができます。科学技術計算やデータ分析の可視化において非常に便利なテクニックなので、ぜひ活用してみてください。
-
MatplotlibでX軸の下に脚注を追加する方法をわかりやすく解説
Matplotlibで作成したグラフのX軸の下に脚注(注釈)を追加したい場合、figtext()メソッドやtext()メソッドを使用することで簡単に実現できます。本記事では、figtext()メソッドを使った具体的な手順をサンプルコードとともに紹介します。脚注を追加する手順figureサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用してx座標とy座標のデータポイントを作成します。作成したx・yデータポイントをプロットします。脚注を配置するために、figtext()メソッドにx・yの位置情報とboxプロパティ(枠線や背景色などのスタイル)を指定して呼び出
-
Pythonで対数ヒストグラムを作成する方法【matplotlib活用】
Pythonのmatplotlibを使って対数(ログ)スケールのヒストグラムを作成するには、hist()メソッドの引数にlog=Trueを指定します。これにより、縦軸が対数スケールで表示され、値の範囲が大きく異なるデータも見やすく可視化できます。作成手順数値のリスト(配列)を用意します。density=Trueを指定して、正規化されたヒストグラムをプロットします。図を表示するには、show()メソッドを呼び出します。サンプルコードimport numpy as np import matplotlib.pyplot as plt plt.rcParams[figure.figsize] = [