wxpython使用matplot实时显示折线图_wxpython嵌入Figure动画实现——基于matplotlib.animation流数据动态监控可视化...

本文介绍了如何使用wxpython和matplotlib创建一个实时显示动态数据的折线图。通过利用FigureCanvasWxAgg、matplotlib.figure和FuncAnimation实现动画效果,并通过队列和异步线程更新数据。同时,文章还展示了如何处理鼠标事件,如motion_notify_event,以增强交互性。
摘要由CSDN通过智能技术生成

1.思路:

(1)利用FigureCanvasWxAgg嵌入canvas

(2)利用 matplotlib.figure 放入画布中,在figure中画出自己想要的图像

(3)动画利用matplotlib.animation实现,动画停止可以用stop停止

self.ani = animation.FuncAnimation(self.figure,

self.animate,

interval=1000,

blit=False,

init_func=self.init)

self.ani.event_source.stop()

(4)动态数据通过队列和异步线程放入queue中,利用animation取数据,然后重画图像。

(5)可视化显示数据,利用figure.canvas.mpl_connect来相应鼠标事件

self.axes.figure.canvas.mpl_connect('motion_notify_event', self.on_motion)

1.1.鼠标事件

# 当鼠标在子图范围内产生动作时,将触发鼠标事件,鼠标事件分为三种:

botton_press_event: 鼠标按下时触发

botton_release_event: 鼠标释放时触发

motion_notify_event: 时间移动时触发

1.2.鼠标事件的相关信息可以通过event对象的属性获得:

name: 事件名

button: 鼠标按键,1,2,3表示左中右按键,None表示没有按键

x,y: 表示鼠标在图表中的像素坐标

xdata,ydata:鼠标在数据坐标系的坐标

"""

2实现效果:

b8b9feb762cdec0d40d5b23f606de278.png

3.完整代码如下,保证运行:

# -*- coding: UTF-8 -*-

import threading

import queue

import time

import matplotlib.animation as animation

import matplotlib.pyplot as plt

import numpy as np

import wx

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas

from matplotlib.figure import Figure

class MyFrame(wx.Frame):

def __init__(self, parent):

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值