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 <[email protected]> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users