質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

13704閲覧

maplotlibを用いて出力したグラフにマウスのカーソルをあわせて値を表示したい。

mimi_chan

総合スコア22

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/02/16 06:52

編集2019/02/16 07:00

matplotlibでグラフを出力しましたが、そのグラフにマウスのカーソルをあわせる事によって、カーソルの合わせられた点の座標を出したいです。

python

1# 散布図の書き方 2# https://qiita.com/supersaiakujin/items/ef85dd247cefdfbd2e2a 3 4import pandas as pd 5import numpy as np 6import matplotlib.pyplot as plt 7import datetime 8import matplotlib.dates as mdates 9%matplotlib inline 10 11url = "" 12 13data = pd.read_csv(url) 14 15# datetimeへの置換 2018/10/27 20:00:00 16data['Timestamp'] = pd.to_datetime(data['Timestamp'], format = '%Y/%m/%d %H:%M') 17 18# データを変数に入れる 19x = data['Timestamp'] 20 21y = data.iloc[:,2] 22 23 24# 骨子づくり 25fig = plt.figure() 26 27ax = fig.add_subplot(1,1,1) 28 29 30 31# formatを設定(この場合は日付) 32xfmt = mdates.DateFormatter("%m/%d") 33 34 35# 間隔を日数にしている 36xloc = mdates.DayLocator() 37 38 39# 上の処理を反映させる 40ax.xaxis.set_major_locator(xloc) 41ax.xaxis.set_major_formatter(xfmt) 42 43# 軸の最大と最小を決定 44ax.set_xlim(datetime.datetime(2018,10,22), datetime.datetime(2018,10,28)) 45 46## excel上で標準となっている値を如何に日付データに変換するのか 47 48 49# print(data["Timestamp"].dtype) 50# ax.scatter(x,y) 51 52# プロットを作図 53ax.plot(x,y) 54 55 56# y軸の目盛り設定(場所に注意) 57ax.set_yticks([-80, -40, 0]) 58ax.set_yticklabels(['unko','oshikko','baba']) 59#ax.set_xticklabels([]) 60 61# 軸に名前をつける 62ax.set_title('first scatter plot') 63ax.set_xlabel('x') 64ax.set_ylabel('y') 65 66# grid線を引く 67ax.grid(True) 68 69 70fig.show()

以下のon click関数等を利用してみましたが、うまくいきませんでした。

python

1# def onclick(event): 2# print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % 3# ('double' if event.dblclick else 'single', event.button, 4# event.x, event.y, event.xdata, event.ydata)) 5 6# cid = fig.canvas.mpl_connect('button_press_event', onclick)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/02/16 10:32

どのようにうまくいかなかったのでしょうか
mimi_chan

2019/02/16 11:08

返信ありがとうございます。 全く反応しませんでした。
guest

回答1

0

ベストアンサー

シンプルな例を示します。手元環境で問題なく動くことを確認したコードです。

python

1import numpy as np 2import matplotlib.pyplot as plt 3 4def onclick(event): 5 print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % 6 ('double' if event.dblclick else 'single', event.button, 7 event.x, event.y, event.xdata, event.ydata)) 8 9fig = plt.figure() 10ax = fig.add_subplot(1, 1, 1) 11ax.scatter(*np.random.rand(2, 10)) 12fig.canvas.mpl_connect("button_press_event", onclick) 13plt.show()

これを動かしてちゃんとクリックで標準出力に表示されるかどうか確認してください。

これがいけて質問文のコードがだめだとしたら、とりあえず以下の点について確認してみてください。思いついたものを書いているだけなので、私も正直確信はないのですが。

  • まさか「以下のon click関数等を利用してみましたが、うまくいきませんでした。」のコードをshowした後に書いていたりしませんか? その前に書く必要があります。
  • fig.show()じゃなくてplt.show()でやってみる。

投稿2019/02/17 17:35

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mimi_chan

2019/02/18 02:29

ありがとう御座います。 非常に参考になりました。jupyter notebook上ではうまくいきませんでしたが、コマンドプロンプト上では完璧に動きました。
hayataka2049

2019/02/18 02:32

jupyterの場合、backendが違うのでノウハウが変わってくるかもしれませんね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問