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函数学习笔记
Oct 07 Python
bat和python批量重命名文件的实现代码
May 19 Python
在windows下Python打印彩色字体的方法
May 15 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
python实现批量视频分帧、保存视频帧
May 31 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
Python-for循环的内部机制
Jun 12 Python
为什么python比较流行
Jun 19 Python
基于Python中Remove函数的用法讨论
Dec 11 Python
Python OpenCV实现图形检测示例详解
Apr 08 Python
Python各协议下socket黏包问题原理
Apr 12 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+javascript液晶时钟
2006/10/09 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
Javascript this指针
2009/07/30 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python字典对象实现原理详解
2019/07/01 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
毕业生自我鉴定
2013/11/05 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
高级工程师岗位职责
2013/12/15 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript