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
@johnkitchin
http://kitchingroup.cheme.cmu.edu



On Thu, Jun 6, 2019 at 2:27 PM Roger Mason <rma...@mun.ca> wrote:

> Hello again,
>
> stardiviner <numbch...@gmail.com> writes:
>
> > Roger Mason <rma...@mun.ca> 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=test :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=test :var
> file="scaleplot04.pdf"
> ( same pythone code here)
>
> #+RESULTS: scaleplot04
> [[file:None]]
> ]]
> #+end_src
>
> Thank you for your help.
>
> Roger
>
>
>
>

Reply via email to