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 Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
详解python数据结构和算法
Apr 18 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python中time、datetime模块的使用
Dec 14 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 Python
python读取mnist数据集方法案例详解
Sep 04 Python
Python实现打乒乓小游戏
Sep 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模块memcache和memcached区别分析
2011/06/14 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
基于jquery的on和click的区别详解
2018/01/15 jQuery
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
Python实现两款计算器功能示例
2017/12/19 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python plotly绘制直方图实例详解
2019/07/22 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python可以用来做什么
2020/11/23 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
美术社团活动总结
2014/06/27 职场文书
主题班会开场白
2015/06/01 职场文书
家长意见书
2015/06/04 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server