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

Reply via email to