A similar approach as the last one should work, the problem I was having is that to print the binary string from python you have to decode it, and latin-1 seems close to right, but it puts a bunch of extra bytes in it that lead to a bad png file. I feel like this worked in Python2 with StringIO, but not in Python3 with BytesIO. John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Sat, Jun 8, 2019 at 6:52 AM Roger Mason wrote: > Hello John, > > John Kitchin writes: > > > you probably figured out the "import io" and "f = io..." line are not > > necessary here. > > Indeed. > > > I couldn't figure out a reasonable way to use :results graphics link > > that didn't result in repeating the filename more than desired. These > > also both work, but seem to both require repeating the filename twice. > > > > #+BEGIN_SRC python :results graphics link :var fname="test.png" :file > "test.png" > > import matplotlib.pyplot as plt > > > > plt.plot([1, 2, 3, 1]) > > plt.savefig(fname) > > #+END_SRC > > > > #+BEGIN_SRC python :results graphics link :file "test.png" > > import matplotlib.pyplot as plt > > > > plt.plot([1, 2, 3]) > > plt.savefig("test.png") > > #+END_SRC > > > > Something like this should work, but there seem to be some extra bytes > > getting put in the png file from the decoding, and latin-1 is the only > > one I can get to work. If anyone knows how to get this to work, I am > > interested in seeing it! > > > > #+BEGIN_SRC python :results value :file "io.png" > > import matplotlib.pyplot as plt > > import io > > buf = io.BytesIO() > > > > plt.plot([1, 2, 3]) > > plt.savefig(buf, format='png') > > > > s = buf.getvalue() > > return s.decode('latin-1') > > #+END_SRC > > > > > > In general though, all of these are much more work than using > > ob-ipython, which just puts images in the buffer for you. > > I will investigate that, thanks for the tip. I began this bit of work > using gnuplot for making x-y plots, but I find that gnuplot syntax gets > messy for anything but simple data. I am not a particular fan > of python so I'm also looking into guile & racket for plotting. > > Thanks for your help, it is much appreciated. > > Roger >