Create real-time plots in Jupyter Notebooks.
Project description
jupyterplot
Create real-time plots in Jupyter notebooks.
What is it?
It generalises Andreas Madsen's excellent python-lrcurve library for machine learning to produce visualisations for arbitrary functions in real-time.
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 snippet:
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 ranges adapt to new data points. If the scale is known beforehand, it can be 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 to pp.update()
as a list of lists, where each sublist corresponds to the curves that are generated in each subplot.
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
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
or 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()
Decoupled y-limits
If each subplot should have different y-limits then the y-limits can be passed as a list containing the the limits for each subplot.
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]])
Input format
Single plot, single line
If the progress plot consists of a single plot with a single line one can pass the y-updates as int
or float
.
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
File details
Details for the file jupyterplot-0.0.2.tar.gz
.
File metadata
- Download URL: jupyterplot-0.0.2.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.24.0 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9da93b5ef82cdea8ffd18f6f40fe1162561402e809b9711e754a615607da2f19 |
|
MD5 | 15fd664e3d552596108e321d8a3cae86 |
|
BLAKE2b-256 | 1bd6ef749c4ca883cf7983b5092cd3c4edce7b9979ad269797204e88d64a39b5 |
File details
Details for the file jupyterplot-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: jupyterplot-0.0.2-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.24.0 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ccc9f98d5e545dbf36a831c8a11c42fea5307f03e3364914cfcd3d438d89677 |
|
MD5 | 9f8bc4c66417450b650d167887d0900c |
|
BLAKE2b-256 | 6d03148b6e179db3e787ce995574cf7ca7c97914239770b6f08121ed7487a2be |