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和MD5实现网站挂马检测程序
Mar 13 Python
Python用GET方法上传文件
Mar 10 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
关于多元线性回归分析——Python&amp;SPSS
Feb 24 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
详解Anaconda 的安装教程
Sep 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
PHP完整的日历类(CLASS)
2006/11/27 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python简易远程控制单线程版
2018/06/20 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python字符串下标与切片及使用方法
2020/02/13 Python
幼师自我鉴定范文
2013/10/01 职场文书
优秀应届生推荐信
2013/11/09 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
工程负责人任命书
2014/06/06 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
立志成才演讲稿
2014/09/04 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
SQL SERVER存储过程用法详解
2022/02/24 SQL Server