[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Output result of source block to a file

From: John Kitchin
Subject: Re: [O] Output result of source block to a file
Date: Sat, 8 Jun 2019 16:40:49 -0400

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.


Professor John Kitchin 
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213

On Sat, Jun 8, 2019 at 6:52 AM Roger Mason <address@hidden> wrote:
Hello John,

John Kitchin <address@hidden> writes:

> you probably figured out the "import io" and "f = io..." line are not
> necessary here.


> 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)
> #+BEGIN_SRC python :results graphics link :file "test.png"
> import matplotlib.pyplot as plt
> plt.plot([1, 2, 3])
> plt.savefig("test.png")
> 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')
> 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]