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实现的数据结构与算法之双端队列详解
Apr 22 Python
在Python的Django框架中包装视图函数
Jul 20 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python中requests小技巧
May 10 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
python获取Pandas列名的几种方法
Aug 07 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Opencv求取连通区域重心实例
Jun 04 Python
Python爬虫设置ip代理过程解析
Jul 20 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
php4的session功能评述(一)
2006/10/09 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php实现的mongodb操作类
2015/05/28 PHP
PHP7 新增常量
2021/03/09 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
js里面的变量范围分享
2020/07/18 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python实现简单淘宝秒杀功能
2018/05/03 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
4s店总经理岗位职责
2013/12/31 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
争先创优个人总结
2015/03/04 职场文书
小型婚礼主持词
2015/06/30 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python