29

我最近开始使用Sweave * 创建使用 R 运行的分析报告,现在我希望对我的 python 脚本做同样的事情。

在 Sweave 文档中找到了对嵌入 python 的引用,但这似乎有点像 hack。有没有人想出一个更好的解决方案,或者有没有我不知道的 python 的等价物?

* Sweave 是一个允许嵌入 R 代码以在乳胶文档中进行完整数据分析的工具

4

11 回答 11

25

我编写了一个名为 Pweave 的 Sweave 的 Python 实现,它为嵌入在 reST 或 Latex 文档中的 Python 代码实现了基本功能和 Sweave 的一些选项。您可以在这里获得它:http: //mpastell.com/pweave并在此处查看原始博客文章:http: //mpastell.com/2010/03/03/pweave-sweave-for-python/

于 2010-03-03T04:01:04.007 回答
18

一些建议:

  1. 我已经使用Pweave好几年了,它与 Sweave 非常相似。强烈推荐。
  2. 现阶段在python中嵌入报表最流行的工具是Jupyter notebooks,它可以让你嵌入markdown,虽然我个人还是喜欢用LaTeX写东西,但它们还是很有用的……
  3. 您还可以查看PyLit,它旨在用于使用 Python 进行文字编程,但不如某些替代品维护得好。
  4. Sphinx非常适合用 python 记录,并且可以输出 LaTex。
  5. 这是用于文学编程的工具列表。其中一些适用于任何编程语言。
于 2010-01-29T13:06:34.650 回答
16

Dexy是与 Sweave 非常相似的产品。Dexy 的一个优点是它不是一种单一语言所独有的。您可以创建一个包含 R 代码、Python 代码或其他任何内容的 Dexy 文档。

于 2011-11-09T18:39:44.927 回答
8

这有点晚了,但为了将来参考,您可以考虑我的PythonTeX包用于 LaTeX。PythonTeX 允许您在 LaTeX 文档中输入 Python 代码,运行它,然后返回输出。但与 Sweave 不同的是,您实际编辑的文档是有效的 .tex 文档(不是 .Snw 或 .Rnw),因此编辑文档的非代码部分既快捷又方便。

PythonTeX 提供了许多特性,包括:

  • 无需运行任何 Python 代码即可编译文档;代码只需要在修改时执行。
  • 所有 Python 输出都被保存或缓存。
  • 代码在用户定义的会话中运行。如果有多个会话,会话会使用所有可用内核自动并行运行。
  • 错误和警告与 .tex 文档的行号同步,因此您可以准确地知道它们的来源。
  • 代码可以被执行、排版或排版并执行。Pygments 提供语法高亮显示。
  • Python 打印的任何内容都会自动带入 .tex 文档。
  • 您可以自定义何时重新执行代码(修改、错误、警告等)。
  • PythonTeX 实用程序类在所有执行的代码中都可用。它允许您自动跟踪依赖关系并指定应清理的已创建文件。例如,您可以设置文档检测它所依赖的数据何时被修改,以便重新执行代码。

一个基本的 PythonTeX 文件如下所示:

\documentclass{article}
\usepackage{pythontex}

\begin{document}

\begin{pycode}
#Whatever you want here!
\end{pycode}

\end{document}
于 2013-01-23T02:55:58.657 回答
5

您可能会考虑 noweb,它与语言无关,是 Sweave 的基础。我已经将它用于 Python,并且效果很好。

http://www.cs.tufts.edu/~nr/noweb/

于 2010-03-04T01:39:36.860 回答
4

我对 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}
于 2011-01-26T06:45:22.333 回答
3

同样的事情我也想过很多次。在阅读了您的问题并查看了您的链接后,我对您链接到的自定义 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
于 2010-02-09T16:59:46.230 回答
3

您可以尝试为SAGE数学平台实现 Sweave-Like 功能的SageTeX 。我没有像我想的那样玩它,但是 SAGE 基本上是一个 python shell 并且评估 python 作为它的本地语言。

于 2010-02-01T05:32:43.980 回答
2

您正在寻找的是通过GNU Emacsorg-mode * 实现的。 org-mode所做的远远超过一个回复中可以详细说明的内容,但相关的要点是:

  • 支持文学编程,能够在同一文档中集成多种语言(包括使用一种语言的结果作为另一种语言的输入)。
  • 图形集成。
  • 本机导出为 LaTeX、HTML、PDF 和各种其他格式,自动生成标记(但您也可以手动生成)。
  • 一切都是100% 可定制的,允许您根据需要调整编辑器。

我的系统上没有安装 Python,但下面是在同一会话中运行两种不同语言的示例。摘录自 Erik Iverson 的精彩org-mode R 教程org-mode修改,该教程解释了文学编程任务的设置和有效使用。这个SciPy 2013 演示文稿演示了如何org-mode集成到工作流中(并且恰好使用 Python)。

在此处输入图像描述

Emacs 可能看起来很吓人。但是对于统计/数据科学,它提供了其他任何地方都没有提供的强大功能,或者分布在各种系统中。Emacs 允许您将它们全部集成到一个界面中。我认为 Daniel Gopar 在他的Emacs 教程中说得最好,

你们有那么懒吗?我的意思是,来吧,只需阅读教程,伙计。

一个小时左右的 Emacs 教程打开了通向一些极其强大的工具的大门。

* Emacs 自带org-mode. 无需单独安装。

于 2017-05-29T16:05:23.773 回答
0

我认为Jupyter-book可能会做你想做的事。

于 2021-09-20T20:13:12.200 回答
0

好吧,使用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())
```
于 2018-08-08T17:14:52.067 回答