From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Mason Subject: Re: Output result of source block to a file Date: Sat, 08 Jun 2019 08:21:59 -0230 Message-ID: References: <877ea041ee.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:57616) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZYxC-00047i-Rs for emacs-orgmode@gnu.org; Sat, 08 Jun 2019 06:52:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZYxB-0004cz-Qh for emacs-orgmode@gnu.org; Sat, 08 Jun 2019 06:52:06 -0400 Received: from esa08.ucs.mun.ca ([134.153.136.28]:21109) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZYxB-0004bP-KQ for emacs-orgmode@gnu.org; Sat, 08 Jun 2019 06:52:05 -0400 In-reply-to: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: John Kitchin Cc: Roger Mason , org-mode-email 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