使用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图形的动态缩放,使交互体验更加友好。
热门推荐
Excel动态图表设置指南:从入门到精通
显示器选购指南:面板、分辨率、刷新率和亮度如何选择?
糖尿病人可以吃凉粉吗?专家解读食用注意事项
MCP服务器开发指南 (1)
应届毕业生求职全攻略:从网站注册到面试准备
脊髓空洞症的症状、诊断与治疗建议
胃酸、胃胀、反酸水、烧心吃什么比较好
医院引入共享陪护床,优化就医配套服务
颈椎手术的住院时间通常是多久
肾上腺肿瘤切除后遗症及生存时间解析
2024年吉林“专升本”电路课程考试大纲(试行)
没钱购车的解决方案有哪些?如何通过合理规划实现购车目标?
标致508和斯柯达速派哪个更值得购买?
触目惊心的吸毒后容貌变化,AI大数据识别准确度超98.5%
手臂胀痛怎么治疗
男士脸型对应发型 对应这些发型才最帅
红花油能治静脉曲张吗
近视手术真的安全吗?这些问题一定要注意
斋月期间禁食对身体有什么好处?
显卡依然太贵,想用核显玩游戏,处理器应该怎么选?
儿童房装修:7个安全与成长型设计要点
怎么避免被联系家人
好养的小鱼有哪些品种?
婴儿床安全标准与选择指南
宝宝湿疹怎么避免
实习:大学生赢得职场先机的关键
甲减抽血化验需要空腹吗
苹果中增强记忆力的关键元素:槲皮素
个人向公司提出辞职应提前几天
连美联储都罕见警告了!一文读懂:美股当前有多贵?