使用Matplotlib实现3D图形的鼠标滚轮缩放功能
创作时间:
作者:
@小白创作中心
使用Matplotlib实现3D图形的鼠标滚轮缩放功能
引用
CSDN
1.
https://blog.csdn.net/schuberta/article/details/140928068
在使用Matplotlib绘制3D图形时,虽然默认支持通过鼠标拖拽变换视角,但缩放功能却需要通过工具栏按钮实现,不够便捷。本文将介绍如何通过捕捉鼠标滚轮事件,实现3D图形的动态缩放功能。
一 源代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 创建一个新的figure
fig = plt.figure()
# 添加一个3d坐标轴
ax = fig.add_subplot(111, projection='3d')
# 定义数据
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 绘制曲面图
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
# 添加颜色条
fig.colorbar(surf)
# 设置坐标轴标签
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
# 处理滚轮事件的函数
def on_scroll(event):
if event.button == 'up':
factor = 1.25
elif event.button == 'down':
factor = 0.8
else:
factor = 1
ax.set_xlim3d(ax.get_xlim3d()[0] * factor, ax.get_xlim3d()[1] * factor)
ax.set_ylim3d(ax.get_ylim3d()[0] * factor, ax.get_ylim3d()[1] * factor)
ax.set_zlim3d(ax.get_zlim3d()[0] * factor, ax.get_zlim3d()[1] * factor)
plt.draw()
# 连接滚轮事件
fig.canvas.mpl_connect('scroll_event', on_scroll)
# 显示图形
plt.show()
二 分析
以上代码中,核心是以下两行:
# 连接滚轮事件
fig.canvas.mpl_connect('scroll_event', on_scroll)
# 处理滚轮事件的函数
def on_scroll(event):
if event.button == 'up':
factor = 1.25
elif event.button == 'down':
factor = 0.8
else:
factor = 1
ax.set_xlim3d(ax.get_xlim3d()[0] * factor, ax.get_xlim3d()[1] * factor)
ax.set_ylim3d(ax.get_ylim3d()[0] * factor, ax.get_ylim3d()[1] * factor)
ax.set_zlim3d(ax.get_zlim3d()[0] * factor, ax.get_zlim3d()[1] * factor)
plt.draw()
这两部分代码分别用于捕捉鼠标滚轮事件,以及对事件的处理。当检测到滚轮向上滚动时,将图形放大25%;向下滚动时,缩小20%。通过这种方式,可以实现对3D图形的动态缩放,使交互体验更加友好。
热门推荐
马桶冲水五大问题及解决办法
空气悬架优缺点:舒适与代价的权衡
投资基金入门指南:从规划到实战的全方位投资建议
工资发在人力资源怎么领
高血脂和高尿酸的患者可以喝豆浆吗
支气管炎咳嗽三个过程
成绩不好,很可能是题做的太多了
苹果手机键盘皮肤更换教程?如何自定义键盘皮肤?
香菇保存的正确方法(如何存放时间长又新鲜的香菇?)
低压电柜导线颜色标准规范
稻谷年年丰,总有梦“袁”时!今天,我们很想您!|袁隆平诞辰94周年
空腹时间越长转氨酶越低吗?转氨酶检查全攻略
未时出生的男孩取名
生辰八字起名:如何为孩子取一个好名字?
怎样跑步才是正确的跑步方法
张大大被指打人 无忧传媒发声明
来问医生 | 散瞳会伤害孩子眼睛吗?
2024年北京市职称评审流程:全过程工程咨询专业
设备主管如何管理团队
3分钟学会看舌象,提前预知身体健康状况
什么情况下交警可以扣车
车辆被扣押后多久可以取回?详细流程与时间解析
述职汇报这样做,加分儿
生蚝生长在什么地方
SQL Server使用教程_初学者必备
在日本旅游时的支付方式和注意事项
商家必看:日本消费者最爱用的支付方式有哪些?
防已黄芪汤买前必读:功效与副作用解析及产品推荐
现代警务探索|出警快一点 平安多一分
无锡公安:十项举措,打造警方公共关系新IP!