我一直在寻找一个很好的解决方案,其中一个线程正在泵送数据,我们希望Jupyter笔记本不断更新图形,而不阻止任何事情。在查阅了十几个相关答案后,以下是一些发现:

小心

如果你想要一个实时的图表,不要使用下面的魔术。如果笔记本使用以下内容,则图形更新不起作用:%load_ext autoreload

%autoreload 2

在导入matplotlib之前,您需要在笔记本中使用以下魔法:%matplotlib notebook

方法1:使用FuncAnimation

这有一个缺点,即即使数据尚未更新,也会发生图形更新。下面的示例显示了另一个线程在Jupyter笔记本通过FuncAnimation更新图形时更新数据。%matplotlib notebook

from matplotlib import pyplot as plt

from matplotlib.animation import FuncAnimation

from random import randrange

from threading import Thread

import time

class LiveGraph:

def __init__(self):

self.x_data, self.y_data = [], []

self.figure = plt.figure()

self.line, = plt.plot(self.x_data, self.y_data)

self.animation = FuncAnimation(self.figure, self.update, interval=1000)

self.th = Thread(target=self.thread_f, daemon=True)

self.th.start()

def update(self, frame):

self.line.set_data(self.x_data, self.y_data)

self.figure.gca().relim()

self.figure.gca().autoscale_view()

return self.line,

def show(self):

plt.show()

def thread_f(self):

x = 0

while True:

self.x_data.append(x)

x += 1

self.y_data.append(randrange(0, 100))

time.sleep(1)

g = LiveGraph()

g.show()

方法2:直接更新

第二种方法是在数据从另一个线程到达时更新图形。这是有风险的,因为matplotlib不是线程安全的,但只要只有一个线程在进行更新,它似乎就可以工作。%matplotlib notebook

from matplotlib import pyplot as plt

from matplotlib.animation import FuncAnimation

from random import randrange

from threading import Thread

import time

class LiveGraph:

def __init__(self):

self.x_data, self.y_data = [], []

self.figure = plt.figure()

self.line, = plt.plot(self.x_data, self.y_data)

self.th = Thread(target=self.thread_f, daemon=True)

self.th.start()

def update_graph(self):

self.line.set_data(self.x_data, self.y_data)

self.figure.gca().relim()

self.figure.gca().autoscale_view()

def show(self):

plt.show()

def thread_f(self):

x = 0

while True:

self.x_data.append(x)

x += 1

self.y_data.append(randrange(0, 100))

self.update_graph()

time.sleep(1)

from live_graph import LiveGraph

g = LiveGraph()

g.show()

python绘制动态变化的图_用Jupyter Noteb中的matplotlib绘制动态变化图形相关推荐

  1. juyter显示决策树图形_在Jupyter Noteb中绘制交互式决策树

    在Jupyter笔记本中使用d3js更新了可折叠图的答案 笔记本第一个单元格的开始%%html .node circle { cursor: pointer; stroke: #3182bd; str ...

  2. cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频

    在定制橱柜家具中,我们用CAD我们经常会用一些门型放置到绘图当中,来展示CAD图纸的美观性,如下图: 那么这些门型要是一点点画却是麻烦,所以我们可以把门型做成动态快的形式,对门型进行任意拉伸,方便我们 ...

  3. 绘制多个折线图_学习笔记第一页 | 常用统计图绘制及描述规范

    一次学习,一次成长!!! 假期参加了狗熊会的一个基础课程(后文简称"课程"),学习了怎么绘制规范的图,怎么写出规范的数据分析报告.蹭着空闲,简单整理本次学习的感受及干货笔记.Tru ...

  4. jsp 如何动态给图片赋值_在Excel表格中你知道如何动态引用图片吗?

    上期文章为朋友们分享了如何将照片快速批量导入导出到Excel表格中,那么如何根据文字匹配对应的图片你知道吗?这篇文章就和朋友们一起学习一下! 一.根据名称批量导入图片: 上期文章为朋友们分享的批量导入 ...

  5. python opencv 拍照_在jupyter noteb中使用opencv显示网络摄像头中的图像

    我正在尝试显示网络摄像头拍摄的图像.但是,存储捕获图像的变量是空的.此问题仅在使用网络摄像头时出现,而不是在播放mp4等视频时出现.这个问题是由Python版本引起的吗?我的OpenCV版本是3.4. ...

  6. 在MySQL中note是什么意思_在Jupyter noteb中从MySQL中检索巨大的数据表

    我正在尝试使用Jupyter笔记本从MySQL表中获取1亿行.我尝试过使用pymysql.cursors来打开MySQL连接.实际上,为了加快查询选择过程,我尝试过使用批处理,因为要同时选择所有行是一 ...

  7. python实时绘制动态曲线_pyqt中使用matplotlib绘制动态曲线

    一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...

  8. 【适合Python语言小白的股价图】利用Python中的matplotlib绘制股价图(非k线图)

    [适合Python语言小白的股价图]利用Python中的matplotlib绘制股价图(非k线图) 代码小白,最近做一家公司的股价复盘用到了matplotlib,在此做个小小的记录.代码的逻辑比较笨, ...

  9. python绘制三维曲面图-Python中使用Matplotlib绘制3D图形示例

    原标题:Python中使用Matplotlib绘制3D图形示例 3D图形能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的3D绘图工具.3D图形在数据分析.数据建模. ...

最新文章

  1. 零基础学java培训怎么选择学校
  2. ParameterizedType应用,java反射,获取参数化类型的class实例
  3. Windows SharePoint Services 3.0 Step By Step翻译
  4. python创建和控制的实体称为_Python语法基础
  5. (26)Vue.js组件通信—props 命名规则
  6. js获取图片原始大小
  7. Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
  8. P1215 [USACO1.4]母亲的牛奶 Mother's Milk
  9. 第五天 面向对象软件分析与设计
  10. 【转存】游戏中常用术语
  11. 淘客app开发成本要多少
  12. 解决stm32下载错误 “Could not stop Cortex-M device.Please check the JTAG cable.“
  13. 路由基础(Routing)
  14. 程序退出,段错误segment default问题定位
  15. 行业了解——挂耳咖啡
  16. multimedia教学设计计算机英语,高中英语教学设计案例
  17. 【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)
  18. oracle查看表sql语句,oracle查看创造表的sql语句
  19. HTML基础(五)——a标签
  20. 2021年线上线下融合会议需求增长,Hilton EventReady Hybrid Solutions将启动

热门文章

  1. 光遇显示服务器已满怎么办,光遇服务器已满怎么办 光遇服务器已满您正在登陆队列中解决方法...
  2. 检查python是否安装成功
  3. TeX中的引号我麻了
  4. mpls接收udp并处理
  5. 对驱动器盘符和卷名的认识
  6. 2023年如何做谷歌SEO优化?谷歌优化排名怎么做?
  7. 顶会速递 | ICLR 2020录用论文之元学习篇
  8. upper_bound 和 lowwer_bound 用法
  9. UE风格化场景练习笔记Day1
  10. 利用SLR实现可编程计算器(表达式求值)