matplotlib对象拾取事件处理的实现


Posted in Python onJanuary 14, 2021

前面讲到的众多数据光标案例其实都用到了matplotlib的pick_event事件(拾取事件),该事件表示画布中的对象被选中,该事件默认是禁用的,需要artist(数据元素,例如Line2D, Text, Patch, Polygon, AxesImage等)设置picker属性才会启用。

picker属性

picker属性有多种取值:

  • None:默认值,表示禁用 pick_event事件。
  • 布尔值:如果为True,则启用事件,当鼠标移动到该数据元素上方时触发事件。
  • 数值:如果取值是数值,则可以认为将该值赋给了pickradius(即事件的触发半径,默认值为15)。
  • 函数:如果取值为函数,则可用于确定数据元素是否触发鼠标事件。

pick_event事件

数据元素利用picker属性启用pick_event事件后,就可以使用事件管理器mpl_connect绑定事件。
pick_event事件除了常规属性,还有两个特有属性:

  • mouseevent:生成拾取事件的鼠标事件。详细信息请参阅matplotlib.backend_bases.MouseEvent。
  • artist:生成拾取事件的数据元素。

案例

下面以如下案例简单说明pick_event事件的处理。
案例功能:触发对象拾取事件则创建对象到两个轴的垂线。
大致流程:

  • 设置picker属性,启用pick_event事件。
  • 编写回调函数,详见注释。
  • 绑定事件。
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('click on points')
# 设置绘图元素的picker属性启用对象拾取事件
line, = ax.plot(np.random.rand(10)*10, 'o', picker=5)
ax.axis([0,10,0,10])

def onpick(event):
  # 通过event.artist属性获取被拾取到的数据元素
  thisline = event.artist
  # 获取数据元素的x,y坐标数组
  xdata = thisline.get_xdata()
  ydata = thisline.get_ydata()
  # 获取到当前元素的索引
  ind = event.ind
  # xdata[ind]为当前元素的x坐标,ydata[ind]为当前元素的y坐标。
  ax.plot((0,xdata[ind]), (ydata[ind],ydata[ind]), 'g--')
  ax.plot((xdata[ind],xdata[ind]), (0,ydata[ind]), 'g--')
  # 重绘图像
  thisline.figure.canvas.draw()
# 绑定事件
fig.canvas.mpl_connect('pick_event', onpick)

plt.show()

 matplotlib对象拾取事件处理的实现

到此这篇关于matplotlib对象拾取事件处理的实现的文章就介绍到这了,更多相关matplotlib对象拾取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python脚本实时处理log文件的方法
Nov 21 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
Python中文件的读取和写入操作
Apr 27 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 #Python
python 写一个水果忍者游戏
Jan 13 #Python
python中编写函数并调用的知识点总结
Jan 13 #Python
Python jieba库分词模式实例用法
Jan 13 #Python
python中yield的用法详解
Jan 13 #Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 #Python
selenium如何定位span元素的实现
Jan 13 #Python
You might like
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
如何利用Python写个坦克大战
2020/11/18 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
事假请假条范文
2014/04/11 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
白酒营销策划方案
2014/08/17 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
介绍信的格式
2015/01/30 职场文书
培训班开班主持词
2015/07/02 职场文书
2016情人节宣传语
2015/07/14 职场文书
工伤调解协议书
2016/03/21 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python