当前位置: 首页 > news >正文

【Python matplotlib】鼠标右键移动画布

        在 Matplotlib 中,鼠标右键移动画布的功能通常是通过设置交互模式来实现的,例如使用 mpl_connect 方法。以下是一个示例代码,展示如何在 Matplotlib 中使用 mpl_connect 方法来实现鼠标右键移动画布的功能: 

import numpy as np
import matplotlib.pyplot as plt
import matplotlibmatplotlib.use('TkAgg')class PanCanvas:def __init__(self, ax):self.ax = axself.press = Noneself.x0 = Noneself.y0 = Noneself.ax.figure.canvas.mpl_connect('button_press_event', self.on_press)self.ax.figure.canvas.mpl_connect('button_release_event', self.on_release)self.ax.figure.canvas.mpl_connect('motion_notify_event', self.on_motion)def on_press(self, event):if event.button == 3:  # Right mouse buttonself.press = event.xdata, event.ydataself.x0 = self.ax.get_xlim()self.y0 = self.ax.get_ylim()def on_release(self, event):if self.press is not None:self.press = Noneself.ax.figure.canvas.draw()def on_motion(self, event):if self.press is None:returnif event.button == 3:  # Right mouse buttonx_press, y_press = self.pressdx = event.xdata - x_pressdy = event.ydata - y_pressself.ax.set_xlim(self.x0[0] - dx, self.x0[1] - dx)self.ax.set_ylim(self.y0[0] - dy, self.y0[1] - dy)self.ax.figure.canvas.draw()def main():# 创建一个绘图窗口和一个子图fig, ax = plt.subplots()ax.set_xlim(0, 10)ax.set_ylim(0, 10)# 绘制一些示例数据x = np.linspace(0, 10, 100)y = np.sin(x)line, = ax.plot(x, y)# 创建 PanCanvas 对象pan_canvas = PanCanvas(ax)plt.show()if __name__ == "__main__":main()
http://www.lryc.cn/news/118983.html

相关文章:

  • Sleuth+Zipkin服务链路追踪
  • 100G光模块的应用案例分析:电信、云计算和大数据领域
  • MongoDB安装和配置
  • 解决createRoot is not a function
  • 【Windows 常用工具系列 6 -- CSDN字体格式(字体、颜色、大小)、背景色设置】
  • 带着问题学习分布式系统
  • element vue2 动态添加 select+tree
  • MySQL Linux自建环境备份至远端服务器自定义保留天数
  • 2023下半年软考改成机考,对考生有哪些影响?
  • MySQL存储结构及索引
  • 2023 RISC-V中国峰会 安全相关议题汇总
  • 要过软考,务必先搞清楚这3点
  • windows常用shell命令大全
  • skywalking忽略调用链路中的指定异常
  • 学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础
  • 线性代数复习公式整理(自用/持续更新)
  • QEMU源码全解析34 —— Machine(4)
  • 引用Boost库 CMakeList的写法
  • Kibana 可视化数据分析以及es常用的数据分析函数
  • golang云原生怎么学?
  • Jenkins+Nginx+vue
  • 【vue 监听页面滑动到底部】
  • (一)创建型设计模式:2、单例模式(C++实现实例 线程安全)
  • 《练习100》86~90
  • C++——命名空间、输入、输出
  • 解锁滴滴ES的性能潜力:JDK 17和ZGC的升级之路
  • Permutation and Primes 2023牛客暑期多校训练营8 J
  • centos如何配置IP地址?
  • git clone 报错Filename too long
  • 【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3