在Org-mode中,我试图将一些Python 2-liner的数据“管道”到Gnuplot,但我无法弄清楚如何正确地做到这一点(Gnuplot图像保持在0kb)。那是我在这方面走了多远:
#+NAME: foo
#+begin_src python :exports code
import random
for x in range (0,300):
print random.randrange(1000), random.randrange(1000)
#+end_src
#+begin_src gnuplot :file gnuplot.png :exports results
reset
plot call_foo notitle
#+end_src
谁能做到这一点?
我在emacs中的gnuplot目前无法正常工作,所以我无法给出完整的答案。但是,python位的:exports
属性应该是output
,而不是code
。此外,要在gnuplot会话中访问此数据,您可能希望将其作为表读取。所以如果你有你的python代码:
#+name: foo
#+begin_src python :exports results
import random
for x in range(0,300):
print random.randrange(1000), random.randrange(1000)
#+end_src
你希望你的gnuplot会话在结果表中读取变量
#+name: plot-it(data = foo)
#+begin_src gnuplot :file gnuplot.png
plot data notitle
#+end_src
您可能需要对gnuplot代码中的data
变量进行一些处理,以确保它是适当的格式。如上所述,我目前无法对此进行测试,但它应该是一个起点。
我对这两个问题进行了一些进一步的讨论,如何将Python带出一个Org表格,以及如何通过另一个Gnuplot块来评估它:Python可以做什么
我已成功通过此代码块进行评估:
#+name: foo
#+begin_src python :results output raw :exports code
import random
out="| %s | %s |"
for x in range(0, 300):
pair=(random.randrange(1000), random.randrange(1000))
print out % pair
#+end_src
#+begin_src gnuplot :var data=foo :file gnuplot.png :exports results
reset
set terminal png size 500,375
plot data u 1:2 notitle
#+end_src
但是,通过这种设置,我总是必须“手动”执行Python块以生成#+结果:foo块(包括如下行:| 629 | 884 |),并且无法将其带到自动评估中。
编辑:用#+srcname:
替换#+name:
,因为自Orgmode 7.8以来#+srcname:
已经过时了。以前版本的Orgmode代码与#+srcname:
confused another user。