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 "<ipython-input-1-e8a4a3fa67f4>", line 1, in <module> 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 <module> 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 <slas...@space.umd.edu>: > 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 = """<html><body> > <img src="data:image/png;base64,{}"/> > </body></html>""".format(base64.encodebytes(sio.getvalue()).decode()) > > > For python 2.7.8 change html =""" to > > html = """<html><body> > <img src="data:image/png;base64,%s"/> > </body></html>""" % base64.encodestring(sio.getvalue()) > > Best regards, > Scott > > > On Nov 1, 2014, at 7:37 AM, Julien Hillairet <julien.hillai...@gmail.com> > 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 = """<html><body> > > ...a bunch of text and html here... > > <img src="data:image/png;base64,%s"/> > > ...more text and html... > > </body></html>""" % sio.getvalue().strip() > > > > > ------------------------------------------------------------------------------ > >
------------------------------------------------------------------------------
_______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users