Matplotlibでcontourfをプロットし、カラーバーを対数スケールにする方法
Matplotlibでcontourfを対数スケールでプロットする手順
Matplotlibのcontourf()を使って塗りつぶし等高線図を描画し、カラーバー(カラースケール)を対数スケールで表示するには、以下の手順に従います。
- plt.rcParamsで図のサイズを設定し、サブプロット間および周囲の余白(パディング)を自動調整します。
- サンプルデータの個数を表す変数Nを初期化します。
- NumPyを使ってx、y、X、Y、Z1、Z2、zの各データ点を生成します。
- ma.masked_where()で0以下の値をマスクします(対数スケールは0や負の値を扱えないため)。
- plt.subplots()で図とサブプロットを作成します。
- contourf()メソッドで等高線をプロットし、ticker.LogLocator()を指定して対数目盛りを適用します。
- fig.colorbar()でスカラーマップに対応するカラーバーを作成します。
- show()メソッドで図を表示します。
コード例
import matplotlib.pyplot as plt import numpy as np from numpy import ma from matplotlib import ticker, cm plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True N = 100 x = np.linspace(-3.0, 3.0, N) y = np.linspace(-2.0, 2.0, N) X, Y = np.meshgrid(x, y) Z1 = np.exp(-X**2 - Y**2) Z2 = np.exp(-(X * 10)**2 - (Y * 10)**2) z = Z1 + 50 * Z2 z[:5, :5] = -1 z = ma.masked_where(z <= 0, z) fig, ax = plt.subplots() cs = ax.contourf(X, Y, z, locator=ticker.LogLocator(), cmap=cm.PuBu_r) cbar = fig.colorbar(cs) plt.show()
ポイント解説
ticker.LogLocator()は、カラーバーの目盛りを10のべき乗(1、10、100…など)のような対数間隔で配置するためのロケーターです。これにより、値の範囲が広いデータでも見やすいカラースケールになります。
また、z = ma.masked_where(z <= 0, z)の行では、0以下の値をマスク配列として除外しています。対数スケールでは0や負の値を扱うことができないため、この処理が重要になります。
実行結果
上記のコードを実行すると、対数スケールのカラーバーを持つ塗りつぶし等高線図が表示されます。中心部の鋭いピークと緩やかな裾の両方が、ひとつの図の中でバランスよく可視化されます。

-
MatplotlibでNaN値を含むデータをプロット・操作する方法を解説
MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp
-
Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説
Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線