python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码


Posted in Python onJuly 31, 2019

在使用Matplotlib画图过程中,有些内容必须鼠标点击或者划过才可以显示,这个问题可以依赖于annotate(s='str' ,xy=(x,y) ,xytext=(l1,l2) ,..)这个函数,其中s 为注释文本内容 , xy 为被注释的坐标点, xytext 为注释文字的坐标位置,其他参数可自行百度哈。当鼠标滑过时候,将其设置为可见,默认情况下为隐藏。下面是一个小例子:

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
fig = plt.figure()
po_annotation = []
for i in range(0, 10):
  x = i
  y = x**2
  point, = plt.plot(x, y, 'o')
  annotation = plt.annotate(('x='+str(x), 'y='+str(y)), xy=(x+0.1, y+0.1), xycoords='data', xytext=(x+0.7, y+0.7),
                textcoords='data', horizontalalignment="left",
                arrowprops=dict(arrowstyle="simple",connectionstyle="arc3,rad=-0.1"),
                bbox=dict(boxstyle="round", facecolor="w",edgecolor="0.5", alpha=0.9)
                )
  annotation.set_visible(False)
  po_annotation.append([point, annotation])
def on_move(event):
  visibility_changed = False
  for point, annotation in po_annotation:
    should_be_visible = (point.contains(event)[0] == True)
    # print(point.contains(event)[0])
    if should_be_visible != annotation.get_visible():
      visibility_changed = True
      annotation.set_visible(should_be_visible)
  if visibility_changed:
    plt.draw()
on_move_id = fig.canvas.mpl_connect('motion_notify_event', on_move)
plt.show()

主要思路为:

•创建[点,注释]对的列表,默认情况下,注释不可见

•每次检测到鼠标移动时,都会注册一个函数“on_move”
•on_move函数遍历每个点和注释,如果鼠标现在位于其中一个点上,则使其关联的注释可见,如果不是,则使其不可见。

运行出来的效果为: 当鼠标滑过时,可以显示其相应坐标:

python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码

总结

以上所述是小编给大家介绍的python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python的高级Git库 Gittle
Sep 22 Python
Python中有趣在__call__函数
Jun 21 Python
python实现DES加密解密方法实例详解
Jun 30 Python
python下10个简单实例代码
Nov 15 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Python通用循环的构造方法实例分析
Dec 19 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 #Python
Flask框架单例模式实现方法详解
Jul 31 #Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 #Python
详细介绍Python进度条tqdm的使用
Jul 31 #Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 #Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 #Python
django解决订单并发问题【推荐】
Jul 31 #Python
You might like
JS实现php的伪分页
2008/05/25 PHP
PHP开发中常用的8个小技巧
2008/08/27 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python 计算文件的md5值实例
2017/01/13 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
高中生学习生活的自我评价
2013/11/27 职场文书
财务会计专业推荐信
2013/11/30 职场文书
党员一句话承诺大全
2014/03/28 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
中学教代会开幕词
2016/03/04 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
PHP遍历数组的6种方式总结
2021/11/17 PHP