matplotlibで座標を取得(ミドルクリックで終了)
matplotlibで作成したグラフから、任意の場所をクリックして座標を取得したい。
以下のコードを用いて行った。
やったことは、
・ginputで取得する座標の回数をあらかじめ決めないようにした。
・取得した座標に印をつける。
・印をつけたグラフを保存する。
の3つ。
サンプルコード
import matplotlib.pyplot as plt
import math
# sin波の作成
x = [i for i in range(1, 100)]
y = [math.sin(0.1*i) for i in x]
def main():
plt.plot(x, y)
a = plt.ginput(n=-1, mouse_add=1, mouse_pop=3, mouse_stop=2)
# n=-1でインプットが終わるまで座標を取得
# mouse_addで座標を取得(左クリック)
# mouse_popでUndo(右クリック)
# mouse_stopでインプットを終了する(ミドルクリック)
for c, d in a:
print(c, d)
plt.plot(c, d, "ro") # グラフ上に座標をマークする
plt.savefig('fig_test.png')
plt.show()
if __name__ == '__main__':
main()
実行結果
C:\Users\devel\Anaconda3\lib\site-packages\matplotlib\backend_bases.py:2453: MatplotlibDeprecationWarning: Using default event loop until function specific to this GUI is implemented
warnings.warn(str, mplDeprecation)
3.27217741935 0.359258536967
6.74959677419 0.579441226974
9.14032258065 0.835329218063
15.4431451613 0.996003072933
21.0939516129 0.823427451036
24.7887096774 0.561588576433