MatplotlibとNumPyを使って画像上に円を描く方法
概要
PythonのMatplotlibとNumPyを組み合わせると、読み込んだ画像の任意の位置に簡単に円を描画できます。画像処理やアノテーション作成など、さまざまな場面で活用できるテクニックです。
画像に円を描く基本の手順
図(figure)のサイズを設定し、サブプロット間および周囲の余白を調整します。
ファイルから画像を読み込み、配列として取得します。
NumPyを使って、円を描く位置となるx・y座標のデータポイントを作成します。
subplots()メソッドで図とサブプロットを作成します。
imshow()メソッドを使い、データを2Dラスタ画像として表示します。
axis('off')で軸を非表示にします。
add_patch()で現在の軸に円(Circleパッチ)を追加します。
show()メソッドで図を画面に表示します。
サンプルコード
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
img = plt.imread('bird.jpg')
x = np.random.rand(5) * img.shape[1]
y = np.random.rand(5) * img.shape[0]
fig, ax = plt.subplots(1)
ax.imshow(img)
ax.axis('off')
for xx, yy in zip(x, y):
circ = Circle((xx, yy), 50, color='red')
ax.add_patch(circ)
plt.show()コードのポイント
この例では、np.random.rand(5)により0〜1の一様乱数を5つ生成し、それに画像の幅(img.shape[1])や高さ(img.shape[0])を掛けることで、画像サイズ内に収まるランダムな座標を作成しています。その後、zip(x, y)で各座標を取り出し、半径50ピクセルの赤い円を順番に追加していきます。
実行結果

コードを実行すると、画像上のランダムな5か所に赤い円が描画された図が表示されます。円の色や半径はCircle()の引数で自由に変更できるため、目的に応じてカスタマイズしてください。
-
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を使ってPythonで複数の図を横並びに描画する方法
Matplotlibで複数の図を並べて描画する手順 PythonのMatplotlibを使えば、subplot()メソッドを活用することで、複数の図を1つのウィンドウ内に横一列に並べて簡単に表示できます。ここでは、同じランダムデータを4種類のカラーマップで可視化する例を紹介します。 具体的には、以下の手順で実装します。 numpyを使ってランダムなデータ(5×5の行列)を作成します。 plt.subplot(nrows, ncols, index)で現在の図にサブプロットを追加します。今回は「nrows=1、ncols=4」のレイアウトで、index=1から順に配置していきます。 imsho