At Tue, 05 Jun 2012 08:57:19 -0600, Eric Schulte wrote: > > henry atting <nsmp...@online.de> 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