我最近开始使用Sweave * 创建使用 R 运行的分析报告,现在我希望对我的 python 脚本做同样的事情。
我在 Sweave 文档中找到了对嵌入 python 的引用,但这似乎有点像 hack。有没有人想出一个更好的解决方案,或者有没有我不知道的 python 的等价物?
* Sweave 是一个允许嵌入 R 代码以在乳胶文档中进行完整数据分析的工具
我最近开始使用Sweave * 创建使用 R 运行的分析报告,现在我希望对我的 python 脚本做同样的事情。
我在 Sweave 文档中找到了对嵌入 python 的引用,但这似乎有点像 hack。有没有人想出一个更好的解决方案,或者有没有我不知道的 python 的等价物?
* Sweave 是一个允许嵌入 R 代码以在乳胶文档中进行完整数据分析的工具
我编写了一个名为 Pweave 的 Sweave 的 Python 实现,它为嵌入在 reST 或 Latex 文档中的 Python 代码实现了基本功能和 Sweave 的一些选项。您可以在这里获得它:http: //mpastell.com/pweave并在此处查看原始博客文章:http: //mpastell.com/2010/03/03/pweave-sweave-for-python/
一些建议:
Dexy是与 Sweave 非常相似的产品。Dexy 的一个优点是它不是一种单一语言所独有的。您可以创建一个包含 R 代码、Python 代码或其他任何内容的 Dexy 文档。
这有点晚了,但为了将来参考,您可以考虑我的PythonTeX包用于 LaTeX。PythonTeX 允许您在 LaTeX 文档中输入 Python 代码,运行它,然后返回输出。但与 Sweave 不同的是,您实际编辑的文档是有效的 .tex 文档(不是 .Snw 或 .Rnw),因此编辑文档的非代码部分既快捷又方便。
PythonTeX 提供了许多特性,包括:
一个基本的 PythonTeX 文件如下所示:
\documentclass{article}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
#Whatever you want here!
\end{pycode}
\end{document}
您可能会考虑 noweb,它与语言无关,是 Sweave 的基础。我已经将它用于 Python,并且效果很好。
我对 Matti 的 Pweave 进行了一些重组,以便可以将任意“块处理器”定义为插件模块。这使得扩展几个基于块的文本预处理应用程序变得容易。重组后的版本可在https://bitbucket.org/edgimar/pweave/src获得。例如,您可以编写以下 LaTeX-Pweave 文档(请注意,此示例中的“处理器名称”使用名称“mplfig”指定):
\documentclass[a4paper]{article}
\usepackage{graphicx}
\begin{document}
\title{Test document}
\maketitle
Don't miss the great information in Figure \ref{myfig}!
<<p=mplfig, label=myfig, caption = "Figure caption...">>=
import sys
import pylab as pl
pl.plot([1,2,3,4,5],['2,4,6,8,10'], 'b.', markersize=15)
pl.axis('scaled')
pl.axis([-3,3, -3,3]) # [xmin,xmax, ymin,ymax]
@
\end{document}
同样的事情我也想过很多次。在阅读了您的问题并查看了您的链接后,我对您链接到的自定义 python Sweave 驱动程序进行了小修改。我对其进行了修改,以保留源代码并生成输出,就像 Sweave 为 R 所做的那样。
我在这里发布了修改后的版本和一个例子:http: //mpastell.com/2010/02/09/python-in-sweave-document/
当然,这不是最优的,但我对输出非常满意,我喜欢在同一个文档中包含 R 和 Python 的能力。
编辑 PyLit:
我也喜欢 PyLit,与我原来的答案相反,你也可以用它来捕捉输出,尽管它不如 Sweave 优雅!这是一个如何做到这一点的小例子:
import sys
# Catch PyLit output
a = range(3)
sys.stdout = open('output.txt', 'w')
print a
sys.stdout = sys.__stdout__
# .. include:: output.txt
您正在寻找的是通过GNU Emacs和org-mode * 实现的。 org-mode
所做的远远超过一个回复中可以详细说明的内容,但相关的要点是:
我的系统上没有安装 Python,但下面是在同一会话中运行两种不同语言的示例。摘录自 Erik Iverson 的精彩org-mode R 教程org-mode
修改,该教程解释了文学编程任务的设置和有效使用。这个SciPy 2013 演示文稿演示了如何org-mode
集成到工作流中(并且恰好使用 Python)。
Emacs 可能看起来很吓人。但是对于统计/数据科学,它提供了其他任何地方都没有提供的强大功能,或者分布在各种系统中。Emacs 允许您将它们全部集成到一个界面中。我认为 Daniel Gopar 在他的Emacs 教程中说得最好,
你们有那么懒吗?我的意思是,来吧,只需阅读教程,伙计。
一个小时左右的 Emacs 教程打开了通向一些极其强大的工具的大门。
* Emacs 自带org-mode
. 无需单独安装。
我认为Jupyter-book可能会做你想做的事。
好吧,使用reticulate是 R 中 Python 接口的最新最佳实现,您可以继续使用 Sweave 并使用 R 解释器调用 Python 内联。例如,这现在可以在 .Rnw 或 .Rmd 降价文件中使用。
```{r example, include=FALSE}
library(reticulate)
use_python("./dir/python")
```
```{python}
import pandas
data = pandas.read_csv("./data.csv")
print(data.head())
```