如何在gtk3中创建实时更新的matplotlib图 [英] How to create a live updating matplotlib graph in gtk3

查看:111
本文介绍了如何在gtk3中创建实时更新的matplotlib图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将实时绘图应用程序放入一个不错的gtk3程序中,到目前为止,我已经知道了,但是它没有显示窗口.我想念什么?预先感谢!

import serial
import numpy as np

from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo as FigureCanvas
from gi.repository import Gtk

class MyWindow(Gtk.ApplicationWindow):
    def __init__(self):

    Gtk.Window.__init__(self, title="Toolbar Example")
        self.set_size_request(700, 500)
    self.box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.VERTICAL)
    self.add(self.box)

    fig = Figure()
    ax = fig.add_subplot(111)
    ax.set_xlim(0, 50)
    ax.set_ylim(0, 20)

    ydata = [0] * 50
    line, = ax.plot(ydata, label='ydata')
    ax.legend()

    f = FigureCanvas(fig)
    self.box.pack_start(f, True, True, 0)

    while True:
        ydata.append(10)
        line.set_data(np.arange(len(ydata)), ydata)
        f.draw()


win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

解决方案

使用canvas.draw()fig.canvas.draw()更新绘图.

有关详细信息,请参见matplotlib .

I wanted to put my live plotting app into a nice gtk3 programm and so far I got this but it doesn't show a window. What am I missing? Thanks in advance!

import serial
import numpy as np

from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo as FigureCanvas
from gi.repository import Gtk

class MyWindow(Gtk.ApplicationWindow):
    def __init__(self):

    Gtk.Window.__init__(self, title="Toolbar Example")
        self.set_size_request(700, 500)
    self.box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.VERTICAL)
    self.add(self.box)

    fig = Figure()
    ax = fig.add_subplot(111)
    ax.set_xlim(0, 50)
    ax.set_ylim(0, 20)

    ydata = [0] * 50
    line, = ax.plot(ydata, label='ydata')
    ax.legend()

    f = FigureCanvas(fig)
    self.box.pack_start(f, True, True, 0)

    while True:
        ydata.append(10)
        line.set_data(np.arange(len(ydata)), ydata)
        f.draw()


win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

解决方案

Use canvas.draw() or fig.canvas.draw() to update the plot.

See the matplotlib for more detail.

这篇关于如何在gtk3中创建实时更新的matplotlib图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆