Hello John, John Kitchin <jkitc...@andrew.cmu.edu> 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