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中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python中转换角度为弧度的radians()方法
May 18 Python
Python实现查找系统盘中需要找的字符
Jul 14 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
详解python中的json和字典dict
Jun 22 Python
用python爬取租房网站信息的代码
Dec 14 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
Django 外键的使用方法详解
Jul 19 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
详解python对象之间的交互
Sep 29 Python
python 实现的IP 存活扫描脚本
Dec 10 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 max_execution_time执行时间问题
2011/07/17 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
js 窗口抖动示例
2013/09/04 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python实现求数列和的方法示例
2018/01/12 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
详解Python中的分支和循环结构
2020/02/11 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
我的理想演讲稿
2014/04/30 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
第一军规观后感
2015/06/12 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python