Matplotlib Helper
Matplotlib Helper is my custom helper to tune Matplotlib experience for Pandoctools/Knitty (but it can be used by itself). I tuned fonts (that are shipped with this python package), please see default fonts and other options in default keyword arguments of ready(...)
, img(...)
and img_path(...)
. I made some tweaks to use it with SugarTeX, some tweaks to automatically use interactive Qt5 plots in Atom/Hydrogen or non-jupyter Python. It can also export plots to SVG or PNG.
Works in Jupyter as well.
Contents
Install
Via conda:
conda install -c defaults -c conda-forge matplotlibhelper
Via pip:
pip install matplotlibhelper
Additionally you may need to install to use in Jupyter Lab:
conda install jupyterlab jupyterlab_server tk nodejs
pip install ipympl
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-matplotlib
Instead of pip install ipympl
you can also try:
conda update --all
conda install -c defaults -c conda-forge ipympl
conda update --all
Usage example
Usage example that works both in Atom+Hydrogen and in Pandoctools+Knitty:
import IPython.display as ds
import matplotlibhelper as mh
mh.ready(font_size=14) # should be run before import matplotlib.pyplot
import matplotlib.pyplot as plt
plt.figure(figsize=mh.figsize(w=6)) # height is automatic via the golden ration
plt.plot([1, 2, 3, 4])
plt.ylabel(mh.stex('ˎ∇ ⋅ [⠘E]ˎ, V/m')) # using SugarTeX
# this code in Knitty would be parsed by Pandoc,
# in Atom/Hydrogen or Jupyter it would be displayed:
ds.display(ds.Markdown(
f'![My beautiful figure]({mh.img()}){{#fig:1}}'
))
# or if you have image size issues in Hydrogen try:
ds.display(ds.HTML(
f'<img src="{mh.img()}" width="900">'
))
Qt backend gives interactive plots in Atom/Hydrogen.
Hints
- Delete
fontList.cache
,fontList.py3k.cache
orfontList.json
from%USERPROFILE%\.matplotlib
folder after installing a new font. - If font becomes bold without a reason try (source):
from matplotlib import font_manager
if 'roman' in font_manager.weight_dict:
del font_manager.weight_dict['roman']
# noinspection PyProtectedMember
font_manager._rebuild()
- Install Computer Modern Unicode for bold-italic unicode support:
"mathtext.sf": "CMU Serif:bold:italic"
. Sans-serif command\mathsf{}
is reassigned because sans-serif font is rarely used in serif docs.