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使用nntp读取新闻组内容的方法
May 08 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
Python字典的核心底层原理讲解
Jan 24 Python
Python日志无延迟实时写入的示例
Jul 11 Python
安装docker-compose的两种最简方法
Jul 30 Python
python实现证件照换底功能
Aug 20 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
使用python去除图片白色像素的实例
Dec 12 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python绘制分布折线图的示例
Sep 24 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
239军机修复记
2021/03/02 无线电
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
ECMAScript6--解构
2017/03/30 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
jQuery操作之效果详解
2017/05/19 jQuery
详解.vue文件解析的实现
2018/06/11 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
浅谈python中的正则表达式(re模块)
2017/10/17 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
python读取图片任意范围区域
2019/01/23 Python
Python删除n行后的其他行方法
2019/01/28 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
店面销售职位的职责
2014/03/09 职场文书
艺术教育实施方案
2014/05/03 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
精神病医院见习报告
2014/11/03 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
行政复议答复书
2015/07/01 职场文书