Metadata-Version: 2.1
Name: matplotlib-backend-kitty
Version: 2.1.1
Summary: show matplotlib plots directly in your kitty terminal
Home-page: https://github.com/jktr/matplotlib-backend-kitty
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Classifier: Framework :: Matplotlib
Classifier: Topic :: Terminals
Description-Content-Type: text/markdown
License-File: LICENSE

# matplotlib-backend-kitty

This python module allows you to use your
[kitty terminal](https://github.com/kovidgoyal/kitty)
to show the plots generated by python's
[Matplotlib](https://github.com/matplotlib/matplotlib).

To use it, add the directory containing this module to your
`sys.path` or the `$PYTHONPATH`, or clone this repo into
your python's `site-packages` directory.

Then, initialize matplotlib either as follows or using the
the `MPLBACKEND` environment variable:

```python
import matplotlib
matplotlib.use('module://matplotlib-backend-kitty')
import matplotlib.pyplot as plt
```

```
$ python -i
>>> 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_KITTY_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 kitty's `icat` 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.


