python绘制动态变化的图_用Jupyter Noteb中的matplotlib绘制动态变化图形
我一直在寻找一个很好的解决方案,其中一个线程正在泵送数据,我们希望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绘制动态变化图形相关推荐
- juyter显示决策树图形_在Jupyter Noteb中绘制交互式决策树
在Jupyter笔记本中使用d3js更新了可折叠图的答案 笔记本第一个单元格的开始%%html .node circle { cursor: pointer; stroke: #3182bd; str ...
- cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频
在定制橱柜家具中,我们用CAD我们经常会用一些门型放置到绘图当中,来展示CAD图纸的美观性,如下图: 那么这些门型要是一点点画却是麻烦,所以我们可以把门型做成动态快的形式,对门型进行任意拉伸,方便我们 ...
- 绘制多个折线图_学习笔记第一页 | 常用统计图绘制及描述规范
一次学习,一次成长!!! 假期参加了狗熊会的一个基础课程(后文简称"课程"),学习了怎么绘制规范的图,怎么写出规范的数据分析报告.蹭着空闲,简单整理本次学习的感受及干货笔记.Tru ...
- jsp 如何动态给图片赋值_在Excel表格中你知道如何动态引用图片吗?
上期文章为朋友们分享了如何将照片快速批量导入导出到Excel表格中,那么如何根据文字匹配对应的图片你知道吗?这篇文章就和朋友们一起学习一下! 一.根据名称批量导入图片: 上期文章为朋友们分享的批量导入 ...
- python opencv 拍照_在jupyter noteb中使用opencv显示网络摄像头中的图像
我正在尝试显示网络摄像头拍摄的图像.但是,存储捕获图像的变量是空的.此问题仅在使用网络摄像头时出现,而不是在播放mp4等视频时出现.这个问题是由Python版本引起的吗?我的OpenCV版本是3.4. ...
- 在MySQL中note是什么意思_在Jupyter noteb中从MySQL中检索巨大的数据表
我正在尝试使用Jupyter笔记本从MySQL表中获取1亿行.我尝试过使用pymysql.cursors来打开MySQL连接.实际上,为了加快查询选择过程,我尝试过使用批处理,因为要同时选择所有行是一 ...
- python实时绘制动态曲线_pyqt中使用matplotlib绘制动态曲线
一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...
- 【适合Python语言小白的股价图】利用Python中的matplotlib绘制股价图(非k线图)
[适合Python语言小白的股价图]利用Python中的matplotlib绘制股价图(非k线图) 代码小白,最近做一家公司的股价复盘用到了matplotlib,在此做个小小的记录.代码的逻辑比较笨, ...
- python绘制三维曲面图-Python中使用Matplotlib绘制3D图形示例
原标题:Python中使用Matplotlib绘制3D图形示例 3D图形能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的3D绘图工具.3D图形在数据分析.数据建模. ...
最新文章
- 零基础学java培训怎么选择学校
- ParameterizedType应用,java反射,获取参数化类型的class实例
- Windows SharePoint Services 3.0 Step By Step翻译
- python创建和控制的实体称为_Python语法基础
- (26)Vue.js组件通信—props 命名规则
- js获取图片原始大小
- Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
- P1215 [USACO1.4]母亲的牛奶 Mother's Milk
- 第五天 面向对象软件分析与设计
- 【转存】游戏中常用术语
- 淘客app开发成本要多少
- 解决stm32下载错误 “Could not stop Cortex-M device.Please check the JTAG cable.“
- 路由基础(Routing)
- 程序退出,段错误segment default问题定位
- 行业了解——挂耳咖啡
- multimedia教学设计计算机英语,高中英语教学设计案例
- 【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)
- oracle查看表sql语句,oracle查看创造表的sql语句
- HTML基础(五)——a标签
- 2021年线上线下融合会议需求增长,Hilton EventReady Hybrid Solutions将启动