Matplotlibで円形のcontourf(塗りつぶし等高線図)を作成する方法
matplotlib.pyplot の contourf() を使って円形の等高線図(塗りつぶしコンター)を作成するには、アスペクト比を1:1に設定することがポイントです。以下の手順で実装できます。
手順
- 図のサイズを設定し、
plt.rcParamsでサブプロット間・周囲の余白を自動調整します。 - NumPy を使用して x、y、a、b、c のデータポイントを作成します。
np.meshgrid()でグリッド座標を生成し、c は原点を中心とした同心円状の値になるように計算します。 plt.subplots()で図とサブプロットを作成します。contourf()メソッドを使って塗りつぶし等高線図を描画します。set_aspect(1)でX軸とY軸のアスペクト比を等しく設定します。これにより、等高線が正確な円形として表示されます。show()メソッドで図を表示します。
コード例
import numpy as np import matplotlib.pyplot as plt # 図のサイズとレイアウトの自動調整を設定 plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # -0.5〜0.5の範囲で100個のデータポイントを生成 x = np.linspace(-0.5, 0.5, 100) y = np.linspace(-0.5, 0.5, 100) # グリッド座標を作成し、円形の等高線になるよう値を計算 a, b = np.meshgrid(x, y) c = a ** 2 + b ** 2 - 0.2 # 図とサブプロットを作成 figure, axes = plt.subplots() # 塗りつぶし等高線図を描画 axes.contourf(a, b, c) # アスペクト比を1に設定して円形に見せる axes.set_aspect(1) plt.show()
出力結果

ポイント解説
この例では c = a² + b² - 0.2 という式により、原点を中心とした同心円状の値を持つデータを作成しています。ここが重要なポイントで、set_aspect(1) を指定しないと、X軸とY軸のスケールが異なるため円が楕円に歪んで表示されてしまいます。アスペクト比を1にすることで、データ上の単位距離が画面上でも等しくなり、真円の等高線図が得られます。
-
FlaskでMatplotlibのグラフを表示する方法【サンプルコード付き】
Webアプリケーション上でグラフを動的に表示したい場合、FlaskとMatplotlibを組み合わせるのが効果的です。この記事では、Flaskアプリケーション内でMatplotlibのプロットをPNG画像としてブラウザに返す方法を、具体的な手順とサンプルコードとともにわかりやすく解説します。 実装の流れ FlaskでMatplotlibのグラフを表示するまでの基本的な手順は以下の通りです。 小さなFlaskアプリケーションを作成する カレントディレクトリに移動し、環境変数を設定してアプリを起動する$ export FLASK_APP=file.py$ flask run ブラウザで http
-
Matplotlibで開いているすべてのpyplotウィンドウを閉じる方法
Matplotlibで複数の図(figure)ウィンドウを開いたまま作業していると、メモリの無駄遣いや表示の混乱につながることがあります。この記事では、close()メソッドを使ってpyplotのウィンドウを閉じるさまざまな方法を解説します。close()メソッドの使い方一覧Matplotlibでは、状況に応じて以下のようにclose()を使い分けることができます。plt.figure().close():特定の図ウィンドウを閉じます。close():引数なしで呼び出すと、現在アクティブな図を閉じます。close(h):Figureインスタンス h を指定すると、その図だけを閉じます。clos