Yura YuLife

ITエンジニアの覚え書き。

matplotlib でプロット上の点をドラッグする例

Python の matplotlib 上で、マーカーをドラッグ可能にするプログラムの参考例です。

f:id:yurayur:20170912000951g:plain

動作環境

実装例

github.com

使い方

  • プロット上で左クリックで点を追加
  • プロット上の点をドラッグで移動
  • プロット上の点を右クリックで削除

解説

そんなに難しいことはしておらず、matplotlib の canvas に対してマウスイベントを拾って、適切な処理を行うだけです。

  • マウスのクリックイベント時のコールバック _on_click で新しい点の追加、もしくは既存の点の選択・削除処理
  • マウス移動イベント時のコールバック _on_motion で選択中の点がある場合は移動処理
  • マウスリリースイベント時のコールバック _on_release で選択中の点がある場合は確定処理

ちょっとずるいのは、点のX, Y座標を整数に絞ることで、点の管理を簡略化しているところかも。。。

もっと良い実装があれば PR くださーい!

参考URL