python+matplotlib实现鼠标移动三角形高亮及索引显示


Posted in Python onJanuary 15, 2018

Trifinder事件实例

实例展示Trifinder对象对的使用。当鼠标移动到一个被分割的三角形上,这个三角形高亮显示,并且它的标签在图标题显示。

展示下演示结果:

python+matplotlib实现鼠标移动三角形高亮及索引显示

完整代码:

import matplotlib.pyplot as plt
from matplotlib.tri import Triangulation
from matplotlib.patches import Polygon
import numpy as np


def update_polygon(tri):
  if tri == -1:
    points = [0, 0, 0]
  else:
    points = triang.triangles[tri]
  xs = triang.x[points]
  ys = triang.y[points]
  polygon.set_xy(list(zip(xs, ys)))


def motion_notify(event):
  if event.inaxes is None:
    tri = -1
  else:
    tri = trifinder(event.xdata, event.ydata)
  update_polygon(tri)
  plt.title('In triangle %i' % tri)
  event.canvas.draw()


# Create a Triangulation.
n_angles = 16
n_radii = 5
min_radius = 0.25
radii = np.linspace(min_radius, 0.95, n_radii)
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi / n_angles
x = (radii*np.cos(angles)).flatten()
y = (radii*np.sin(angles)).flatten()
triang = Triangulation(x, y)
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
             y[triang.triangles].mean(axis=1))
        < min_radius)

# Use the triangulation's default TriFinder object.
trifinder = triang.get_trifinder()

# Setup plot and callbacks.
plt.subplot(111, aspect='equal')
plt.triplot(triang, 'bo-')
polygon = Polygon([[0, 0], [0, 0]], facecolor='y') # dummy data for xs,ys
update_polygon(-1)
plt.gca().add_patch(polygon)
plt.gcf().canvas.mpl_connect('motion_notify_event', motion_notify)
plt.show()

总结

本文所示是一个Python+matplotlib实现的简单实例,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python爬取读者并制作成PDF
Mar 10 Python
浅谈python中set使用
Jun 30 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
python-opencv颜色提取分割方法
Dec 08 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
Pandas之缺失数据的实现
Jan 06 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 Python
wxPython之解决闪烁的问题
Jan 15 #Python
详细解读tornado协程(coroutine)原理
Jan 15 #Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 #Python
Tornado高并发处理方法实例代码
Jan 15 #Python
使用Python实现windows下的抓包与解析
Jan 15 #Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 #Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 #Python
You might like
论坛头像随机变换代码
2006/10/09 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
一个js实现的所谓的滑动门
2007/05/23 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
Python下线程之间的共享和释放示例
2015/05/04 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
MIS软件工程师的面试题
2016/04/22 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
小区停车场管理制度
2014/01/27 职场文书
便利店投资创业计划书
2014/02/08 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
秋天的雨教学反思
2014/04/27 职场文书
财务部绩效考核方案
2014/05/04 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
企业文化口号
2014/06/12 职场文书
中药学自荐信
2014/06/15 职场文书
本科应届生自荐信
2014/06/29 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书