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

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

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

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

Q&A

解決済

2回答

684閲覧

python matplotlibに関して

AN3000

総合スコア37

Python

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

0グッド

0クリップ

投稿2021/12/07 21:57

matplotlibでクリックした場所にプロットをしていくスクリプトを作成しています。
そのなかで、クリックした回数をカウントするスクリプト(回数が表示されるのが好ましい)を組み込みたいと考えていますが、良い情報がなく困っています。

ちょっとした提案等でも構いませんので、回答していただけると嬉しいです。
ソースコードは以下です。ターミナルで動かしてみてください。

python

1import matplotlib.pyplot as plt 2markers = list('ov^<>12348sp*hH+xD') 3colors = list('bgrcmyk') 4def motion(event): 5 global i, j 6 x = event.xdata 7 y = event.ydata 8 plt.plot([event.xdata],[event.ydata], marker=markers[i], color=colors[j], markersize=12) 9 i = (i + 1) % len(markers) 10 j = (j + 1) % len(colors) 11 plt.draw() 12 13fig, ax = plt.subplots() 14ax.set_xlim(0, 1) 15ax.set_ylim(0, 1) 16i = j = 0 17plt.connect('button_press_event', motion) 18plt.show()

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

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

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

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

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

guest

回答2

0

ベストアンサー

凡例(legend)に表示する場合。

python

1import matplotlib.pyplot as plt 2 3plt.rcParams['font.family'] = 'MS Gothic' 4 5markers = list('ov^<>12348sp*hH+xD') 6colors = list('bgrcmyk') 7 8def motion(event): 9 global i, j, cnt 10 x, y = event.xdata, event.ydata 11 plt.plot( 12 [x], [y], color=colors[j], marker=markers[i], markersize=12) 13 i, j = (i + 1) % len(markers), (j + 1) % len(colors) 14 cnt += 1 15 leg = plt.legend( 16 [f'クリック回数 {cnt}'], handletextpad=-2.0, loc='upper right') 17 leg.legendHandles[0].set_visible(False) 18 plt.draw() 19 20fig, ax = plt.subplots() 21ax.set_xlim(0, 1) 22ax.set_ylim(0, 1) 23i = j = cnt = 0 24plt.connect('button_press_event', motion) 25 26plt.show()

count

投稿2021/12/08 02:31

編集2021/12/08 02:38
melian

総合スコア19703

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

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

AN3000

2021/12/08 03:17

私が思い描いていた通りのものです!ありがとうございました!!
lehshell

2021/12/08 03:40

マーカーがクリック文字に重なりそう。markerscale=0 が漏れていませんか? leg = plt.legend([f'クリック回数 {cnt}'], markerscale=0, handletextpad=-2.0, loc='upper right') なのでは?
melian

2021/12/08 03:43

> lehshell leg.legendHandles[0].set_visible(False) としていますのでマーカーは非表示になります。
lehshell

2021/12/08 03:52

matplotlib 3.4.3 では leg.legendHandles[0].set_visible(False) があっても表示されていました。本来は消えないとおかしいのですね。
melian

2021/12/08 03:57

なるほど、こちらは matplotlib 3.5.0 なのですがマーカーが消えますね。
lehshell

2021/12/08 04:11

matplotlib 3.5.0 にして消えることを確認できました。Thanks!
guest

0

タイトルに表示でよろしければ global 変数 cnt を用意して

Python

1 cnt += 1 2 plt.title(f'クリック回数:{cnt:>3}', fontname='MS Gothic') 3 plt.draw()

投稿2021/12/08 01:01

lehshell

総合スコア1147

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

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

AN3000

2021/12/08 03:18

ありがとうございます!思い描いていた通りのものができそうです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問