This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Description
The Node and Deno contexts can't use the matplotlib_pyodide backends but work fine with Agg.
Takes a second to piece together but one pattern I'm finding useful is to save the output as a data: url.
import base64
import io
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
matplotlib.use('Agg')
x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
pic_IObytes = io.BytesIO()
plt.savefig(pic_IObytes, format='png')
pic_IObytes.seek(0)
pic_hash = base64.b64encode(pic_IObytes.read()).decode('utf-8')
dataurl = f'data:image/png;base64,{pic_hash}'
dataurl
Which seems to work! :D
Couldn't think of the right place for it but I think an example like that could be handy (even if just in this issue). Also interested in easier / more efficient patterns for sharing matplotlib figures between the python and JS contexts.