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)
【おすすめ記事】 ≫ None オブジェクト
コメント