29

私は最近、Rで実行された分析のレポートを作成するためにSweave *の使用を開始しましたが、現在、Pythonスクリプトでも同じことを行うことを検討しています。

SweaveドキュメントにPythonを埋め込むことへの言及を見つけましたが、それはちょっとしたハックのようです。誰かがより良い解決策を考え出したことがありますか、または私が知らないpythonに相当するものはありますか?

* Sweaveは、ラテックスドキュメントに完全なデータ分析を行うためのRコードを埋め込むことができるツールです。

4

11 に答える 11

25

私は、Pweaveと呼ばれるSweaveのPython実装を作成しました。これは、reSTまたはLaTeXドキュメントに埋め込まれたSweaveforPythonコードの基本機能といくつかのオプションを実装します。ここで入手できます:http://mpassel.com/pweaveおよび元のブログ投稿をここで参照してください:http: //mpassel.com/2010/03/03/pweave-sweave-for-python/

于 2010-03-03T04:01:04.007 に答える
18

いくつかの提案:

  1. 私は数年前からPweaveを使用していますが、これはSweaveと非常によく似ています。強くお勧めします。
  2. この段階でPythonにレポートを埋め込むための最も人気のあるツールは、マークダウンを埋め込むことができるJupyterノートブックです。個人的には、LaTeXで物事を書くのが好きですが、非常に便利です...
  3. PyLitもご覧ください。これは、Pythonを使用した文芸的プログラミングを目的としていますが、一部の代替手段ほど維持されていません。
  4. SphinxはPythonでのドキュメント化に最適で、LaTexを出力できます。
  5. これが文芸的プログラミングのためのツールのリストです。これらのいくつかは、任意のプログラミング言語で動作します。
于 2010-01-29T13:06:34.650 に答える
16

DexyはSweaveと非常によく似た製品です。Dexyの利点の1つは、単一の言語に限定されないことです。RコードやPythonコードなどを含むDexyドキュメントを作成できます。

于 2011-11-09T18:39:44.927 に答える
8

これは少し遅れていますが、将来の参考のために、LaTeX用の私のPythonTeXパッケージを検討するかもしれません。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

言語に依存せず、Sweaveの基盤となるnowebを検討してみてください。私はそれを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

SAGE数学プラットフォーム用のSweave-Like機能を実装するSageTeXを試すことができます。あまり遊んでいませんが、SAGEは基本的にPythonシェルであり、Pythonを母国語として評価します。

于 2010-02-01T05:32:43.980 に答える
3

私も何度も同じことを考えてきました。質問を読んでリンクを調べた後、リンク先のカスタムpythonSweaveドライバーに小さな変更を加えました。SweaveがRに対して行うのと同じ方法で、ソースコードを保持し、出力を生成するように変更しました。

変更されたバージョンと例をここに投稿しました:http://mpassel.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 に答える
2

あなたが探しているものは、 GNUEmacsorg-mode *で実現されます。 単一の応答で詳細に説明できる以上のことを行いますが、関連するポイントは次のとおりorg-modeです

  • 同じドキュメント内に複数の言語を統合する機能を備えた文芸的プログラミングのサポート(ある言語の結果を別の言語の入力として使用することを含む)。
  • グラフィック統合。
  • LaTeX、HTML、PDF、およびその他のさまざまな形式にネイティブにエクスポートして、マークアップを自動的に生成します(ただし、手動で行うこともできます)。
  • すべてが100%カスタマイズ可能であり、エディターをニーズに適合させることができます。

システムにPythonをインストールしていませんが、同じセッション内で実行されている2つの異なる言語の例を以下に示します。抜粋は、文芸的プログラミングタスクのセットアップと効果的な使用法を説明するErikIversonによる素晴らしいorg-modeRチュートリアルから変更されています。org-modeこのSciPy2013プレゼンテーションorg-modeは、ワークフローに統合する 方法を示しています(そして、たまたまPythonを使用しています)。

ここに画像の説明を入力してください

Emacsは恐ろしいように見えるかもしれません。しかし、統計/データサイエンスの場合、他のどこにも提供されていないか、さまざまなシステムに分散している優れた機能を提供します。Emacsを使用すると、それらすべてを単一のインターフェースに統合できます。Daniel Goparは、彼のEmacsチュートリアルで それを最もよく言っていると思います。

あなたたちは怠け者ですか?つまり、チュートリアルを読んでください。

Emacsチュートリアルで1時間ほどすると、いくつかの非常に強力なツールへの扉が開かれます。

*Emacsにはが付属していorg-modeます。個別にインストールする必要はありません。

于 2017-05-29T16:05:23.773 に答える
0

さて、 RでのPythonインターフェースの最近の最良の実装であるreticulateを使用すると、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 に答える
0

Jupyter-bookはあなたが望むことをするかもしれないと思います。

于 2021-09-20T20:13:12.200 に答える