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 相关文章推荐
Python中的startswith和endswith函数使用实例
Aug 25 Python
python实现用于测试网站访问速率的方法
May 26 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Django中URL的参数传递的实现
Aug 04 Python
python生成器用法实例详解
Nov 22 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Python批量将csv文件转化成xml文件的实例
May 10 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
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
关于JS模块化的知识点分享
2019/10/16 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
node后端服务保活的实现
2019/11/10 Javascript
python实现狄克斯特拉算法
2019/01/17 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
python绘制高斯曲线
2021/02/19 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
信息专业本科生个人的自我评价
2013/10/28 职场文书
幼教简历自我评价
2014/01/28 职场文书
应届毕业生自荐信
2014/05/28 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫