『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

ラベル付きポインタ関数

pointer()

pointer() は点をプロットする Axes.scatter() に、テキスト添付機能を付け加えた関数です。同じことを Axes.text() や Axes.annotate() などでやろうとすると面倒なので、1つの関数にまとめておきました。

# PYTHON_POINTER_01

# ラベル付きポインタ関数
def pointer(axes, x, y, text, angle = 45,
            textsize = 12, textcolor = "black", pad = 0.2,
            psize = None, pcolor = None, marker = None,
            cmap = None, norm = None, alpha = None,
            linewidths = None, edgecolors = None):
    
    # 点をプロット
    axes.scatter(x, y, s = psize, c = pcolor,
                 marker = marker, cmap = cmap, norm = norm,
                 alpha = alpha, linewidths = linewidths,
                 edgecolors = edgecolors)
    
    # 数学関数モジュールをインポート
    import math
    
    # テキストの配置角度をラジアンに変換
    text_angle = angle * math.pi / 180
    
    # テキストの位置を計算
    loc_x = x + pad * math.cos(text_angle)
    loc_y = y + pad * math.sin(text_angle)
    
    # テキストを配置
    axes.text(loc_x, loc_y, text,
              fontsize = textsize, color = textcolor)

引数 pad で点とテキストの距離を、angle でテキストの配置角度を指定します(テキストの位置とはテキストボックスの左下の位置です)。配置角度は x 軸から反時計回りに測った角度です。angle = 0 は点の右横、angle = 90 は点の真上を意味します。
 
pointer() を使っていくつかの点を打ってみます。直交座標を設定するために、当サイトのコードライブラリにある coordinate() を用意しておいてください。

# PYTHON_POINTER_02

import matplotlib.pyplot as plt

# FigureとAxes
fig = plt.figure(figsize = (5, 5))
ax = fig.add_subplot(111)

# 座標を準備
coordinate(ax, [-2, 5], [-2, 5])

# 座標(3,3)に赤い点を打ち、右上(45°)に"P1"を表示
pointer(ax, 3, 3, "P1", pcolor = "red",
        textsize = 16, pad = 0.3)

# 座標(2,1)に青い点を打ち、上(90°)に"P2"を表示
pointer(ax, 2, 1, "P2", pcolor = "blue",
        angle = 90, textsize = 16, pad = 0.3)

# 座標(-1,3)に緑色のサイズ200の点を打ち、
# その下(270°)に"P3"をダークオレンジで表示
pointer(ax, -1, 3, "P3",
        pcolor = "green", psize = 100,
        angle = 270, textsize = 16,
        textcolor = "darkorange", pad = 0.6)

python pointer()関数

【おすすめ記事】 ≫ None オブジェクト

 

コメント