Well, the methodology is sufficient and efficient, I'm OK with that :) Thanks for these additional information.
Regards, Le 2 nov. 2014 09:34, "Scott Lasley" <slas...@space.umd.edu> a écrit : > I wish I could say that it was because of a deep understanding of the > inner workings of matplotlib or a rock solid grasp of python 3's bytes vs > strings, but it wasn't. fig.savefig threw the "TypeError: string argument > expected, got 'bytes'" exception, so I figured BytesIO might work better > with the binary png data than StringIO, and it did. Your image URI > included base64 encoding I added the base64 code and fiddled with decoding > to get it to produce ASCII. iPython is great for this sort of playing > around with snippets of code. > > btw, if you are not aware of the pros and cons of using data uri's to > embed images take a look at this Wikipedia page for some helpful information > http://en.wikipedia.org/wiki/Data_URI_scheme > > Apologies if you were expecting a more detailed answer, > Scott > > > On Nov 1, 2014, at 4:37 PM, Julien Hillairet <julien.hillai...@gmail.com> > wrote: > > > Indeed, it works also for me with Python 3.3.5. > > > > Could you explain the changes you made and the reasons behind the > byte/string encoding ? > > > > Best regards, > > > > 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