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 28 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
获取Django项目的全部url方法详解
Oct 26 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
浅谈Python中的函数(def)及参数传递操作
May 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中的cookie
2006/11/26 PHP
使用php清除bom示例
2014/03/03 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
动态创建类实例代码
2009/10/07 Python
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
解决Python使用列表副本的问题
2019/12/19 Python
python matplotlib库的基本使用
2020/09/23 Python
flask项目集成swagger的方法
2020/12/09 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
班级安全教育实施方案
2014/02/23 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Opencv中cv2.floodFill算法的使用
2021/06/18 Python