在Jupyter笔记本中创建实时绘图。
jupyterplot的Python项目详细描述
朱皮特图
Create real-time plots in Jupyter notebooks.
这是什么?在
它概括了Andreas Madsen优秀的机器学习库{a1}来实时生成任意函数的可视化效果。在
安装
pip install jupyterplot
如何使用
单点
在Jupyter笔记本电脑中创建一个简单的实时绘图与以下片段一样简单:
from jupyterplot import ProgressPlot
import numpy as np
pp = ProgressPlot()
for i in range(1000):
pp.update(np.sin(i / 100))
pp.finalize()
注意:必须使用pp.finalize()
语句使绘图在笔记本会话之间持久化。在
自定义范围
默认情况下,x和y范围将适应新的数据点。如果事先知道比例尺,可以事先设定:
^{pr2}$多线
还可以通过在构造函数中指定行名称并在列表中传递所有值来并行绘制多行。在
pp = ProgressPlot(line_names=["lin", "log", "cos", "sin"],
x_lim=[0, 1000],
y_lim=[-1, 4])
for i in range(1000):
pp.update([[i / 250, np.log10(i + 1), np.cos(i / 100), np.sin(i / 100)]])
pp.finalize()
注意:数据以列表列表的形式提供给pp.update()
,其中每个子列表对应于在每个子批次中生成的曲线。在
多个绘图
pp = ProgressPlot(plot_names=["cos", "sin"],
line_names=["data", "delayed-data"],
x_lim=[0, 1000],
y_lim=[-1, 1])
for i in range(1000):
pp.update([[np.cos(i / 100), np.cos((i + 20) / 100)],
[np.sin(i / 100), np.sin((i + 20) / 100)]])
pp.finalize()
自定义x值
如果x值不应在每次更新时递增1,则可以设置x_iterator=False
。这需要向update(x, y)
传递两个值,其中x
是int
或{
pp = ProgressPlot(x_iterator=False, x_label="custom-x", x_lim=[0, 10000], y_lim=[0, 10])
for i in range(1000):
pp.update(10 * i, i / 100)
pp.finalize()
解耦y-极限
如果每个子批次应该有不同的y限制,那么y限制可以作为包含每个子批次限制的列表来传递。在
pp = ProgressPlot(plot_names=['plot 1', 'plot 2'], x_lim=[0, 1000], y_lim=[[0, 10],[0, 100]])
for i in range(1000):
pp.update([[(i/100)], [(i/100)**2]])
输入格式
单点,单线
如果进度图由一个带有单行线的单独绘图组成,则可以将y更新作为int
或float
传递。在
多个图,多条线
如果使用多个绘图或线条,y更新可以是列表或dict:
y_update_list=[[y_plot_1_line_1,y_plot_1_line_2],[y_plot_2_line_1,y_plot_2_line_2]]y_update_dict={'plot_name_1':{'line_name_1':y_plot_1_line_1,'line_name_2':y_plot_1_line_2},'plot_name_2':{'line_name_1':y_plot_2_line_1,'line_name_2':y_plot_2_line_2}}
局限性
- 一次只能使用一个
ProgressPlot()
对象。在 - 每个子批次必须具有相同的行数。在
- 每个子批次使用相同的颜色周期。在
- 项目
标签: