web-dev-qa-db-ja.com

RプロットをLaTeXに入れますか?

私はRとLaTeXの両方の初心者で、最近Rを使用して標準時系列グラフをプロットし、PNG画像として保存する方法を見つけました。私が心配しているのは、画像として保存してからLaTeXに埋め込むと、スケーリングされて見栄えが悪くなることです。

Rのplot()関数がベクターグラフィックスを出力し、それをLaTeXに埋め込む方法はありますか?私は両方とも完全に初心者なので、優しくしてください:)コードスニペットは大歓迎です!

67
hsribei

シェーンはスポットオンです、あなたはスウィーヴが欲しいです。最終的に。

初心者としては、タスクを分離する方が良いかもしれません。そのために、これを行います:

  1. デバイスを開きます:pdf("figures/myfile.pdf", height=6, width=6)
  2. rオブジェクトをプロットします:plot(1:10, type='l', main='boring')-そして、ラティスとggplotがprintの周りに明示的なplotを必要とすることを思い出してください。
  3. 重要:デバイスを閉じます:dev.off()ファイルをファイナライズします。
  4. オプション:PDFファイルを調べます。
  5. laTeXでは、ドキュメントヘッダーでusepackage{graphicx}を使用し、
    \includegraphics[width=0.98\textwidth]{figures/myfile}は、前に作成した図を含め、ファイル拡張子はオプションです。
  6. これをpdflatexで実行してお楽しみください。
56

LaTeXドキュメントに含めるための出力を生成するには、tikzDeviceパッケージをお勧めします。

http://cran.r-project.org/web/packages/tikzDevice/index.html

TikzDeviceは、Rで生成されたグラフィックを、LaTeXパッケージtikzで解釈できるコードに変換します。 TikZは、LaTeX用の非常に素晴らしいベクター描画システムを提供します。 TikZ出力の良い例は次の場所にあります。

http://www.texample.net/

tikzDeviceは、他のRグラフィックデバイスと同様に使用できます。

_require( tikzDevice )

tikz( 'myPlot.tex' )

plot( 1, 1, main = '\\LaTex\\ is $\\int e^{xy}$' )

dev.off()
_

Rは単一のバックスラッシュをエスケープ文字として解釈するため、LaTeXマクロのバックスラッシュは2重にする必要があることに注意してください。 LaTeXドキュメントでプロットを使用するには、単にそれを含めます:

_\include{path/to/myPlot.tex}
_

pgfSweaveパッケージには、上記の手順を処理できるSweave機能が含まれています。文書にLaTeXプリアンブルのどこかに_\usepackage{tikz}_が含まれていることを確認してください。

http://cran.r-project.org/

tikz()と比較したpdf()関数の利点は次のとおりです。

  • Figureのラベルとキャプションのフォントは、LaTeXドキュメントで使用されるフォントと常に一致します。これにより、ドキュメントが統一された外観になります。

  • 数学的な注釈を作成するために利用できるLaTeXタイプセッターのすべての能力を備えており、Figureテキストで任意のLaTeXコードを使用できます。

tikz()関数の欠点は次のとおりです。

  • 多数のコンポーネントを含むプロットを処理するのにうまくスケーリングしません。これらは、大きな行列のpersp()プロットなどです。グラフィック要素のせん断数により、LaTeXのクロール速度が低下したり、メモリが不足したりする可能性があります。

  • パッケージは現在ベータ版としてフラグが付けられています。これは、作成者がそうする説得力のある理由を見つけた場合、パッケージのインターフェースまたは機能が変更される可能性があることを意味します。

私がtikzDevicepgfSweaveの両方のパッケージの著者であることを放棄することでこの投稿を終了する必要があります。ただし、昨年は両方のパッケージを使用していくつかの学術報告書を作成し、結果に非常に満足しています。

58
Sharpie

Sweave の使用を検討することもできます。これについては、Sweave Webサイト(および他の場所)で多くの優れたドキュメントを利用できます。構文は非常に単純です。Rコードを_<<>>=_と_@_の間に置くだけです。

最後に このように見える になる簡単な例を示します。

_\documentclass[a4paper]{article}

\title{Sweave Example 1}
\author{Friedrich Leisch}

\begin{document}

\maketitle

In this example we embed parts of the examples from the
\texttt{kruskal.test} help page into a \LaTeX{} document:

<<>>=
data(airquality)
library(ctest)
kruskal.test(Ozone ~ Month, data = airquality)
@
which shows that the location parameter of the Ozone 
distribution varies significantly from month to month. Finally we
include a boxplot of the data:

\begin{center}
<<fig=TRUE,echo=FALSE>>=
boxplot(Ozone ~ Month, data = airquality)
@
\end{center}

\end{document}
_

ドキュメントを作成するには、R内から_R CMD Sweave file.Rnw_を呼び出すか、Sweave(file)を実行するだけです。

22
Shane

これは、SOについての質問の重複です。

しかし: http://r-forge.r-project.org/projects/tikzdevice/ -rからのtikz出力と http://www.rforge.net/pgfSweave/ sweave経由のtikzコード。

Tikzを使用すると、ドキュメントの残りの部分と一貫した外観が得られます。さらに、latexを使用してグラフ内のすべてのテキストを植字します。

[〜#〜] edit [〜#〜]LaTeXをRプロットに入れる

3
Mica