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 25 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python查看微信撤回消息代码
Jun 07 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python四种出行路线规划的实现
Jun 23 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
星际争霸任务指南——人族
2020/03/04 星际争霸
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
js一组验证函数
2008/12/20 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
python实现日常记账本小程序
2018/03/10 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python编写实现抽奖器
2020/09/10 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
linux比较文件内容的命令是什么
2015/09/23 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
经管应届生求职信
2013/11/17 职场文书
大学在校生求职信范文
2013/11/21 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
完整版商业计划书
2014/09/15 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书