emacs-orgmode
[Top][All Lists]
Advanced

[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: Thu, 6 Jun 2019 17:12:40 -0400

I think you can use something like this:

#+BEGIN_SRC python :results output file :var fname="test.png"
import matplotlib.pyplot as plt
import io

f = io.StringIO()
plt.plot([1, 2, 3, 17])
plt.savefig(fname)
print(fname, end='')
#+END_SRC

It is in Python3.

John

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


On Thu, Jun 6, 2019 at 2:27 PM Roger Mason <address@hidden> wrote:
Hello again,

stardiviner <address@hidden> writes:

> Roger Mason <address@hidden> writes:
>
>> Hello,
>>
>> I want to output the result of the evaluation of a (python) source block
>> to a (graphics) file and have a link to the file inserted in the buffer.
>
> For this, you should try updated header arguments like ":results graphics link"
> or ":results file link".

I updated to Org mode version 9.2.3 (release_9.2.3-390-gfb5091 @ /home/rmason/.emacs.d/org-git/lisp/)

This works but sets the results to verbatim, hence the exported &
compiled code does not include the graphic.

#+name: scaleplot03
#+begin_src python :results output graphics link :exports results :var data="" :var file="scaleplot03.pdf"
  import matplotlib.pyplot as plt
  import csv

  scale = []
  lescale = []
  cdscale = []

  energy = []
  leenergy = []
  cdenergy = []

  for row in data:
      scale.append(float(row[0]))
      energy.append(float(row[1]))
      if int(row[2]) != 0:
             lescale.append(float(row[0]))
             leenergy.append(float(row[1]))
      if int(row[3]) != 0:
             cdscale.append(float(row[0]))
             cdenergy.append(float(row[1]))       

  plt.plot(scale,energy, 'r+')
  plt.plot(lescale,leenergy, 'go')
  plt.plot(cdscale,cdenergy, 'bo')
  plt.xlabel('scale')
  plt.ylabel('energy (Ha)')
  plt.title('Energy vs scale')
  plt.legend()
  plt.savefig(file)
  print ("./%s" % file)
#+end_src

#+RESULTS: scaleplot03
: ./scaleplot03.pdf

This header does not work either:
#+name: scaleplot04
#+begin_src python :results file link :exports results :var data="" :var file="scaleplot04.pdf"
( same pythone code here)

#+RESULTS: scaleplot04
[[file:None]]
]]
#+end_src

Thank you for your help.

Roger




reply via email to

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