emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] python/babel inline images


From: William LÉCHELLE
Subject: Re: [O] python/babel inline images
Date: Tue, 05 Jun 2012 18:34:46 -0400
User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.8 Emacs/23.4 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)

At Tue, 05 Jun 2012 08:57:19 -0600,
Eric Schulte wrote:
> 
> henry atting <address@hidden> writes:
> 
> > Hi,
> >
> > I do not succeed in generating an inline image as a result of a
> > python code block. The code itself works, C-c C-c generates the
> > according picture, but only in my home directory. The code block:
> >
> > -*- org-babel-python-command: "python3" -*-
> > #+begin_src python
> > import csv
> > import matplotlib.pyplot as plot
> > x = []
> > y = []
> > csv_reader = csv.reader(open('csv_data.csv'))
> > for line in csv_reader:
> >     x.append(int(line[0]))
> >     y.append(float(line[1]))
> > plot.plot(x, y, label=r'exp', color='green')
> > plot.legend(loc='lower right')
> > plot.savefig("exp_csv.svg")
> > #+end_src
> >
> > It tried different combinations of `:exports results', `:results
> > file', `:file filename'
> 
> I'm not python expert, but the code block should be run in your current
> directory, e.g., the following outputs the current working path expected
> for me.
> 
> #+begin_src sh
>   pwd
> #+end_src
> 
> If you want to explicitly pass the current directory to your code block
> as an argument, you could try something like the following
> 
> #+begin_src python :var mydir=(file-name-directory (buffer-file-name))
>   return mydir
> #+end_src

I guess if it's a paths' problem, the python equivalent would be os.getcwd(),
from the os module, and a solution to have the picture in the right place
could be os.chdir(path) (or maybe plot.savefig can take a full path as an
argument), but I think the OP (and I'm very interested too) wants org-babel to
manage the python output somehow to inline the image automatically.

I don't see that possible, because I don't think the "results" of plot.savefig
is the value of the image, but rather an i/o operation somehow (and I may well
be wrong) (and nothing goes to stdout). But maybe to output a link could do ?

#+begin_src python :results output file
  <<stuff>>
  path = "exp_csv.svg"
  plot.savefig(path)
  print path
#+end_src

HTH



reply via email to

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