『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 オブジェクト

 

コメント

  1. あとりえこばと より:

    ChatGPTに#PYTHON_POINTER_01 を見せて(ヒントになるようなコメントアウト文は全部取り除きました)、コードの意味を説明してもらうと、ちゃんとした答えが返ってきました。

    [ChatGPT] 上記のコードは、Pythonで定義されたpointerという関数です。この関数は、与えられた座標に点とテキストを表示するために使用されるものです。以下に、各引数とそれらの意味を説明します…(中略)…関数の処理の中で、与えられた座標に対してscatter関数を使って点を描画し、与えられたテキストをtext関数を使って描画しています。mathモジュールをインポートして、与えられた角度をラジアンに変換し、テキストの位置を計算しています。この関数は、与えられた座標に対して点とテキストを表示するための便利な関数であり、グラフやプロットにおいて特定のデータポイントを強調表示する際に使用することができます。

    【舞台:オフィスのデスク上。登場人物はAさんとBさん、両者はIT社員】
     
    Aさん: おはよう、Bさん!最近、データの可視化に関していい方法を見つけたんだ。
     
    Bさん: おっ、それは何かいいものを見つけたんだね。教えてくれる?
     
    Aさん: もちろんだよ!`pointer`関数を使えば、点を描画してテキストも表示できるんだ。

    Bさん: なるほど、それは便利そうだね。具体的にどんな感じなんだい?
     
    Aさん: たとえば、データのグラフを作成する時に、重要なデータポイントを強調したい場合があるでしょ?
     
    Bさん: ああ、そうだね。でも、どうやって強調するんだ?

    Aさん: それが、`pointer`関数の役割なんだよ。データポイントに点を描画して、関連するテキストも表示できるんだ。
     
    Bさん: なるほど、それならデータの解説やプレゼンテーションに使えそうだね。

    Aさん: そうだよ!しかも、パラメータを調整することで、点の色やマーカーの種類、サイズなども自由自在に設定できるんだ。
     
    Bさん: それは便利だね。例えば、目立つ赤い点と大きなテキストを表示したい場合はどうするんだ?
     
    Aさん: 簡単だよ!`pointer`関数の引数にそれらのパラメータを指定すればいいんだ。赤い点や大きなテキストを表示することができるよ。

    Bさん: なるほど、パラメータの指定も簡単そうだね。データの可視化や解説に役立ちそうだよ。
     
    Aさん: そうだよ!他の同僚たちにも教えてあげようと思って、今日は`pointer`関数を紹介してみようかな。
     
    Bさん: いいアイデアだね!みんなに使ってもらえば、よりわかりやすいプレゼンテーションが作成できるよ。

    Aさん: そうだね!データの可視化に役立つツールを共有することは、仕事の効率化にもつながるからね。
     
    Bさん: それはいいね!ありがとう、Aさん。今度のプロジェクトで`pointer`関数を使ってみようと思うよ。
     
    Aさん: どういたしまして