Skip to main content

show matplotlib plots inline in most terminals, via notcurses

Project description

matplotlib-backend-notcurses

This python module allows you to show the plots generated by python's matplotlib in many modern and older terminals by using notcurses.

To install it, you will need to do one of the following

  • $ pip install --user matplotlib-backend-notcurses
  • clone this repo into your python's site-packages directory
  • clone this repo and add the parent directory to sys.path or $PYTHONPATH

Then, configure matplotlib to use the module by either setting the environment variable MPLBACKEND to module://matplotlib-backend-notcurses or by initializing matplotlib as follows.

import matplotlib
matplotlib.use('module://matplotlib-backend-notcurses')
import matplotlib.pyplot as plt

Please make sure that you have the programs ncplayer and notcurses-info, both from notcurses, in your PATH.

If you've installed this module correctly, you can now use the following sample code to draw a plot in your terminal.

$ export MPLBACKEND='module://matplotlib-backend-notcurses'
$ python -i
>>> import numpy as np; import pandas as pd
>>> n = 10000
>>> df = pd.DataFrame({'x': np.random.randn(n),
                       'y': np.random.randn(n)})
>>> df.plot.hexbin(x='x', y='y', gridsize=20)
<plot is shown>

If you set your matplotlib to interactive mode via matplotlib.pyplot.ion() or by running python as python -i, non-empty figures are drawn on construction where possible. This allows you to use pandas' plot() calls directly, without calling plt.show(), and still enables you to manually construct and plt.show().

If your matplotlib is in non-interactive mode, you can construct your figures as usual, and then call plt.show() to render them to your terminal. This works from both a repl and when running scripts.

Figures are resized to the size of your terminal by default. If you'd rather control the sizing of figures manually, set the MPLBACKEND_NOTCURSES_SIZING environment variable to manual.

Internally, this backend is somewhat based on matplotlib's IPython support: it's a hybrid of image and GUI backend types. It works by using matplotlib's Agg backend to render the plot, and then calls notcurses's ncplayer to place the rendered image on your terminal. This means that plotting works as expected, but the image drawn to your terminal isn't interactive and animations aren't supported.

This is a port of my matplotlib-backend-kitty to notcurses tooling, which provides support for more terminal graphics protocols and reasonable auto-detection and fallbacks for these.

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

matplotlib-backend-notcurses-1.0.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file matplotlib-backend-notcurses-1.0.1.tar.gz.

File metadata

  • Download URL: matplotlib-backend-notcurses-1.0.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for matplotlib-backend-notcurses-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f9b10dfd784a2b57e46c9ef4179def3ed4b105c0aa6b53331c71b1331ea4832a
MD5 39bb8f5d224702f86bd9bfdf5be0e471
BLAKE2b-256 ec8aab27d989cb84ada3029f98b5a66ecc8c624fab264388c8dc4456bcd417a7

See more details on using hashes here.

File details

Details for the file matplotlib_backend_notcurses-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: matplotlib_backend_notcurses-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for matplotlib_backend_notcurses-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c3848c5cfe9b730bdc382e1f07c071177ce557f27ecc9019f7ae0501b13fe65
MD5 7d31a793eba16af6ad027d478f421dd6
BLAKE2b-256 3e80f05b3439b8b30a3d2eefcbcd6865270e32c5f4720fea10b2d856a0e56f86

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