首页 > 其他分享 >在jupyterlab中使用按钮控制matplotlib绘图,并实时更新绘图

在jupyterlab中使用按钮控制matplotlib绘图,并实时更新绘图

时间:2023-04-28 16:47:47浏览次数:36  
标签:jupyterlab plt self None matplotlib widgets 绘图 np output

直接上代码

import matplotlib.pyplot as plt
import numpy as np
import ipywidgets as widgets
import time
from IPython.display import Javascript, display, clear_output, update_display

class PltTest:

    def __init__(self):
        self.output = widgets.Output()

        self.tbtn1 = widgets.ToggleButton(value=False, description='Click 1', disabled=False,
                                     button_style='',  # 'success', 'info', 'warning', 'danger' or ''
                                     tooltip='Description',
                                     icon='check'  # (FontAwesome names without the `fa-` prefix)
                                     )

        self.tbtn2 = widgets.ToggleButton(value=False, description='Click 2', disabled=False,
                                     button_style='', tooltip='Description', icon='check')

        # An HBox lays out its children horizontally
        self.ui = widgets.HBox([self.tbtn1, self.tbtn2])
        self.fig, self.ax = None, None
        self.fig1, self.ax1 = None, None
        self.line = None
        self.line1 = None
        self.out1 = widgets.interactive_output(self.plot1, {'tb1': self.tbtn1})
        self.out2 = widgets.interactive_output(self.plot2, {'tb2': self.tbtn2})

    def plot1(self, tb1):
        print("tb1:", tb1)
        # if tb1['new']:
        if tb1:
            with self.output:
                self.fig, self.ax = plt.subplots(1, figsize=(5, 3.5))
                self.ax.set_title('figure1')
            # display(fig)
            plt.show()
        else:
            self.output.clear_output()
            # clear_output()
            plt.clf()
            plt.close()


    def plot2(self, tb2):
        print("tb2:", tb2)
        if tb2:
            with self.output:
                self.fig1, self.ax1 = plt.subplots(1, figsize=(5, 3.5))
                self.ax1.set_title('figure2')
            # display(fig1)
            plt.show()
        else:
            self.output.clear_output()
            # clear_output()
            plt.clf()
            plt.close()


    def draw1(self):
        # print("draw1")

        # plt.cla()
        if self.line is not None:
            self.line.remove()
            # line1.remove()
            # clear_output(wait=True)
        if self.fig and self.ax:
            x = np.cumsum(np.random.randn(150)) + 100.0
            self.line, = self.ax.plot(x, np.sin(x))
            self.line.set_ydata(np.cumsum(np.random.randn(150)) + 100.0)
            self.ax.relim()
            # 重设坐标轴,让图像更协调
            self.ax.autoscale_view()

            self.fig.canvas.draw()
            time.sleep(0.3)


    def draw2(self):
        # print("draw2")
        # plt.cla()
        if self.line1 is not None:
            self.line1.remove()
            # line1.remove()
            # clear_output(wait=True)
        if self.fig1 and self.ax1:
            x = np.cumsum(np.random.randn(150)) + 100.0
            self.line1, = self.ax1.plot(x, np.sin(x))
            self.line1.set_ydata(np.cumsum(np.random.randn(150)) + 100.0)
            self.ax1.relim()
            # 重设坐标轴,让图像更协调
            self.ax1.autoscale_view()

            self.fig1.canvas.draw()
            time.sleep(0.3)

    def dis(self):
        out1 = widgets.interactive_output(self.plot1, {'tb1': self.tbtn1})
        out2 = widgets.interactive_output(self.plot2, {'tb2': self.tbtn2})
        # tbtn1.observe(plot1, names='value')
        # tbtn2.observe(plot2, names='value')

        display(self.ui, out1, out2)

在jupyterlab中显示按钮点击可显示或关闭matplotlib绘图

# 交互式绘图需要安装  pip install ipympl
%matplotlib widget
from plt_test import PltTest

pt = PltTest()
pt.dis()

实时更新绘图内容

for i in range(10):
    pt.draw1()
    pt.draw2()

 

标签:jupyterlab,plt,self,None,matplotlib,widgets,绘图,np,output
From: https://www.cnblogs.com/chen55555/p/17362568.html

相关文章

  • python的绘图工具matplotlib.pyplot
    matplotlib.pyplot是什么matplotlib.pyplot是matplotlib库的一个子模块,它提供了一种类似于MATLAB的绘图系统,可用于创建各种类型的图表和可视化图像。使用pyplot可以方便地绘制二维图形,如折线图、散点图、直方图、条形图等等。您可以使用函数plot()、scatter()......
  • Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor
    在Pycharm中使用Matplotlib中的pyplot时,运行代码报错:MatplotlibDeprecationWarning:SupportforFigureCanvaseswithoutarequired_interactive_frameworkattributewasdeprecatedinMatplotlib3.6andwillberemovedtwominorreleaseslater.解决方法File->Set......
  • python数据可视化神库:Matplotlib快速入门
    Matplotlib易于使用,是Python中了不起的可视化库。它建立在NumPy数组的基础上,旨在与更广泛的SciPy堆栈一起工作,并由几个图组成:线图、条形图、散点图、直方图等。快速入门importmatplotlib.pyplotasplt#initializingthedatax=[10,20,30,40]y=[20,30,40,50]......
  • 关于在linux-centos7下部署 .net core程序绘图(PDF等)丢失中文字体的解决方案
    关于在linux-centos7下部署.netcore程序绘图(PDF等)丢失中文字体的解决方案说明:1:以下操作基于新系统,如果步骤一,二已经安装则不需要额外安装.需要注意的是,在使用(yuminstall包)的时候如果提示包不存在;需要运行步骤(一:5安装epel,企业版Linux额外包)2:以下()内代表......
  • Python 实时生成曲线的两种方法-Matplotlib/Pyqtgraph
    前言Matplotlib更倾向于制作出版质量的图形,对matlab程序员来说更直观。pyqtgraph不像matplotlib那样完整/成熟,但运行速度要快得多,而且pyqtgraph旨在用于数据采集和分析应用程序,对于python/qt程序员来说更直观。Matplotlib(据我所知)不包括许多pyqtgraph的功能,例如图像......
  • AI绘图!Lora训练简明教程
    如果想要快速训练,使用B站up主秋叶的整合包搭配视频【AI绘画】最佳人物模型训练!保姆式LoRA模型训练教程一键包发布_哔哩哔哩_bilibili即可.训练的基本逻辑就是首先进行预处理,可以通过stablediffusionwebui中的预处理,也可以通过ps这种图片处理软件,比如我想训练一个某动漫角......
  • python matplotlib 散点图的拟合直线的简单示例
     #samplepointsX=[0,5,10,15,20]Y=[0,7,10,13,20]#solveforaandbdefbest_fit(X,Y):xbar=sum(X)/len(X)ybar=sum(Y)/len(Y)n=len(X)#orlen(Y)numer=sum([xi*yiforxi,yiinzip(X,Y)])-n*xbar*y......
  • Python pandas 数据清洗与数据绘图实战
    1、Python数据探索Python已成为数据科学的主要语言之一,并继续在数据科学领域不断壮大。如前所述,就原始性能而言,Python并不总是速度最快的语言。但是有些数据处理库(如NumPy)主要用C语言编写,并且经过大量优化,以至于速度不再是问题。此外,对可读性和可访问性的考虑往往超过了纯粹的速度......
  • matplotlib这个图横坐标上的文本如何调整为竖着显示呢?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【知足】问了一个matplotlib处理的问题,这里拿出来给大家分享下。二、实现过程这里【甯同学】给了一个解决思路,直接plt.xticks(rotation=270),如下图所示:顺利地解决了粉丝的问题。最后补充一个设置画布大小的问题,设置方法......
  • 数据结构绘图网站
    数据结构绘图1.树1.1层次遍历https://binary-tree-visualizer.vercel.app/输入格式[5,4,6,null,null,3,7]1.2BST和AVLhttps://visualgo.net/zh/bst创建,清空插入输入格式#注意中间没有空格7,3,10,12,5,1,9,21.3Huffmanhttps://huffman.ooz.ie/直......