Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのmatplotlibでポリゴン内部の領域を塗りつぶす方法を徹底解説

Pythonのデータ可視化ライブラリ「matplotlib」を使えば、多角形(ポリゴン)の内部領域を簡単に塗りつぶして描画できます。この記事では、PolygonパッチとPatchCollectionを組み合わせて、ポリゴン内の領域を図に追加する基本的な手順を、実際のコード例とともにわかりやすく解説します。

実装の手順

matplotlibでポリゴン内部を塗りつぶすには、以下の手順に従います。

  • 図のサイズ(figure size)を設定し、サブプロット間および周囲の余白(padding)を調整します。

  • plt.subplots()を使って、図(Figure)とサブプロット(Axes)を作成します。

  • Polygonクラスからポリゴンのインスタンスを生成します。

  • ポリゴンのリストを渡して、パッチの汎用コレクションであるPatchCollectionを作成します。

  • add_collection()メソッドでコレクションを軸(Axes)に追加します。戻り値としてコレクションが返されます。

  • plt.show()メソッドを呼び出して、図を画面に表示します。

コード例

以下は、ランダムな6点からなる閉じたポリゴンを生成し、その内部を塗りつぶして表示するサンプルコードです。

import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection
from matplotlib.patches import Polygon
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, ax = plt.subplots(1)

polygon = Polygon(np.random.rand(6, 2), closed=True, alpha=1)

collection = PatchCollection([polygon])

ax.add_collection(collection)

plt.show()

コードのポイント解説

  • Polygon(np.random.rand(6, 2), closed=True):0〜1の範囲でランダムに生成した6つの座標点を頂点とするポリゴンを作成しています。closed=Trueを指定することで、始点と終点をつなげた閉じた多角形になります。

  • PatchCollection([polygon]):複数のパッチ(図形)をまとめて管理するためのコレクションです。多数のポリゴンを一括で描画したい場合にも便利です。

  • alpha=1:塗りつぶしの不透明度を指定します。値を0.5などに下げると、半透明のポリゴンを描画できます。

出力結果

上記のコードを実行すると、以下のようにランダムな形状のポリゴンが塗りつぶされて表示されます。

Pythonのmatplotlibでポリゴン内部の領域を塗りつぶす方法を徹底解説

この手法を応用すれば、地理データの領域表示や、グラフ上の特定範囲のハイライトなど、さまざまな可視化シーンで活用できます。

  1. Python Matplotlibで3Dグラフをプロットする方法を解説

    PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使

  2. PythonとMatplotlibで複数のプロットを1つの図に描画する方法

    Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開