Many Thanks for your support.
It is Python 3.3.5 and matplotlib 1.4.0
I’ve also found that it worked with ByteIO(), but then I was stuck by the encode/decode things. Thanks very much !
The traceback is below:
Traceback (most recent call last):
File “”, line 1, in
runfile(‘/home/hash/example.py’, wdir=‘/home/hash’)
File “/usr/lib/python3.3/site-packages/spyderlib/widgets/externalshell/sitecustomize.py”, line 586, in runfile
execfile(filename, namespace)
File “/usr/lib/python3.3/site-packages/spyderlib/widgets/externalshell/sitecustomize.py”, line 48, in execfile
exec(compile(open(filename, ‘rb’).read(), filename, ‘exec’), namespace)
File “/home/hash/example.py”, line 10, in
fig.savefig(sio, format=“png”)
File “/usr/lib64/python3.3/site-packages/matplotlib/figure.py”, line 1470, in savefig
self.canvas.print_figure(*args, **kwargs)
File “/usr/lib64/python3.3/site-packages/matplotlib/backend_bases.py”, line 2192, in print_figure
**kwargs)
File “/usr/lib64/python3.3/site-packages/matplotlib/backends/backend_agg.py”, line 525, in print_png
filename_or_obj, self.figure.dpi)
TypeError: string argument expected, got ‘bytes’
···
2014-11-01 17:21 GMT+01:00 Scott Lasley <slasley@…2425…>:
This works for me with python 3.4.2
import matplotlib.pyplot as plt
from io import BytesIO
import base64
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
sio = BytesIO()
fig.savefig(sio, format=“png”)
html = “”"
""".format(base64.encodebytes(sio.getvalue()).decode())
For python 2.7.8 change html =“”" to
html = “”"
""" % base64.encodestring(sio.getvalue())
Best regards,
Scott
On Nov 1, 2014, at 7:37 AM, Julien Hillairet <julien.hillairet@…287…> wrote:
Dear all,
I’m trying to write a html page content in which a png figure is generated by matplotlib, with Python3.
However, the following piece of code does not work with matplotlib/Python3 (while it should work with Python2). The error is the following on
TypeError: string argument expected, got ‘bytes’
when on fig.savefig(sio, format=“png”)
Could someone explain me how to do it ?
Best regards,
Julien
import matplotlib.pyplot as plt
from io import StringIO
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
sio = StringIO()
fig.savefig(sio, format=“png”)
html = “”"
…a bunch of text and html here…
…more text and html…
""" % sio.getvalue().strip()