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实现的一个p2p文件传输实例
Jun 04 Python
基于Python os模块常用命令介绍
Nov 03 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
python 不以科学计数法输出的方法
Jul 16 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
Python实现京东秒杀功能代码
May 16 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
python 设置输出图像的像素大小方法
Jul 04 Python
详解用python计算阶乘的几种方法
Aug 14 Python
python迭代器常见用法实例分析
Nov 22 Python
pytorch 修改预训练model实例
Jan 18 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实现的在线人员函数库
2008/04/09 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
幼儿教师思想汇报
2014/01/10 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL