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删除文本中行数标签的方法
May 31 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
python编程使用协程并发的优缺点
Sep 20 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python实现二维曲线拟合的方法
Dec 29 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Python经典五人分鱼实例讲解
Jan 04 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
PHP排序算法类实例
2015/06/17 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python可迭代对象操作示例
2019/05/07 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python tkinter组件使用详解
2019/09/16 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
旅游管理专业生自荐信范文
2014/01/02 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
出租房屋协议书
2014/09/14 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
联村联户简报
2015/07/21 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
详解Vue3使用axios的配置教程
2022/04/29 Vue.js