Create real-time plots in Jupyter Notebooks.
Project description
jupyterplot
Create real-time plots in Jupyter notebooks.
What is it?
This is a library to generate real-time plots in Jupyter notebooks with a tqdm-like interface. It is largely based on the python-lrcurve library by Andreas Madsen.
Install
pip install jupyterplot
How to use
Single plot
Creating a simple real-time plot in a Jupyter notebook is as easy as easy as the following line:
from jupyterplot import ProgressPlot
import numpy as np
pp = ProgressPlot()
for i in range(1000):
pp.update(np.sin(i/100))
pp.finalize()
Note: The pp.finalize()
statement is necessary to make the plots persistent between notebook sessions.
Custom range
By default, the x and y range adapt to new data points. If the scale is known beforehand, it might steadier to set it beforehand:
pp = ProgressPlot(x_lim=[0,1000],y_lim=[-1.5,1.5])
for i in range(1000):
pp.update(np.sin(i/100))
pp.finalize()
Multiple lines
One can also plot several lines in parallel by specifying the line names in the constructor and passing all values in a list.
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()
Note: The data is fed with two brackets [[y1, y2, y3]]
. The first list corresponds the plots, wheras the second list to each line of each plot as we will also see in the next example.
Multiple plots
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()
Custom x-values
Finally, if the x values should not be incremented by 1 at every update one can set the x_iterator=False
. This requires passing two values to the update(x, y)
, where x
is an int
/float
and y
follows the same format as in the previous examples.
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()
Input format
Single plot, single line
If a the progress plot consists of a single plot with a single line one can pass the y-updates as int/floats.
Multiple plots, multiple lines
If multiple plots or lines are used, the y-updates can either be lists or dicts:
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}}
Limitations
- Only one
ProgressPlot()
object can be used at a time. - Each subplot must have the same number of lines.
- The same color cycle for each subplot is used.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jupyterplot-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f0a357032aef381627dc9a0174a6ae177b13edb2d8d98c99c04f5af5f7cd157 |
|
MD5 | ee7fa3822cf1f52c4142fedba7415925 |
|
BLAKE2b-256 | 07502aebd256cf2714cabbf6d07d146e36e69d2703a9e1466791452a06ac2ba2 |