Skip to main content

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.

Metadata

Release files for matplotlib-backend-notcurses 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matplotlib-backend-notcurses 1.0.2
File Size Uploaded
matplotlib-backend-notcurses-1.0.2.tar.gz 6.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for matplotlib-backend-notcurses 1.0.2
File Interpreter ABI Platform
matplotlib_backend_notcurses-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / matplotlib-backend-notcurses-1.0.2.tar.gz

Download URL matplotlib-backend-notcurses-1.0.2.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8408ad1889b1186715493e4363bc6a2d22ba6dd04cc63f252cf6df98ee22cbbd
BLAKE2b-256 checksum
How to use checksums
1237fda1d76b084f14a31920b35296ecd5cb637515d68f2eab875b62d9df72ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.9

Release files / matplotlib_backend_notcurses-1.0.2-py3-none-any.whl

Download URL matplotlib_backend_notcurses-1.0.2-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab798f35d3153fa34f2b24e3891490df528dcfd89cf4bd7131c348c11d3df5f6
BLAKE2b-256 checksum
How to use checksums
fbeca1ba72dc2c737e1573cda0542805908da37de9b5ecf61572aa72f39f58d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.9

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page