Skip to main content

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.

single-plot

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()

single-plot

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()

single-plot

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()

single-plot

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()

single-plot

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()

single-plot

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]])

single-plot

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyterplot-0.0.2.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

jupyterplot-0.0.2-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

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

Hashes for jupyterplot-0.0.2.tar.gz
Algorithm Hash digest
SHA256 9da93b5ef82cdea8ffd18f6f40fe1162561402e809b9711e754a615607da2f19
MD5 15fd664e3d552596108e321d8a3cae86
BLAKE2b-256 1bd6ef749c4ca883cf7983b5092cd3c4edce7b9979ad269797204e88d64a39b5

See more details on using hashes here.

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

Hashes for jupyterplot-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5ccc9f98d5e545dbf36a831c8a11c42fea5307f03e3364914cfcd3d438d89677
MD5 9f8bc4c66417450b650d167887d0900c
BLAKE2b-256 6d03148b6e179db3e787ce995574cf7ca7c97914239770b6f08121ed7487a2be

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page