组织模式代码块评估

问题描述 投票:4回答:2

在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 org-mode
2个回答
1
投票

我在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变量进行一些处理,以确保它是适当的格式。如上所述,我目前无法对此进行测试,但它应该是一个起点。


0
投票

我对这两个问题进行了一些进一步的讨论,如何将Python带出一个Org表格,以及如何通过另一个Gnuplot块来评估它:Python可以做什么

  1. 返回[1,2,3]
  2. 打印“| 1 | 2 | 3 |” for:结果输出原始
  3. 或打印[a,b,c]:结果输出表

我已成功通过此代码块进行评估:

#+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

© www.soinside.com 2019 - 2024. All rights reserved.