70

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

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

4

4 に答える 4

63

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

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います。\usepackage{tikz}ドキュメントにLaTeXプリアンブルのどこかに含まれていることを確認してください。

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

tikz()と比較した場合の機能の利点 は次のpdf()とおりです。

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

  • 数学記号の作成に利用できるLaTeXタイプセッターのすべての機能があり、図のテキストで任意のLaTeXコードを使用できます。

この機能の欠点は次のtikz()とおりです。

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

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

私はtikzDevicepgfSweaveパッケージの両方の作成者であることを放棄してこの投稿を終了する必要があります。そうすれば、私の意見に偏りが生じる可能性があります。しかし、私は昨年、両方のパッケージを使用していくつかの学術レポートを作成し、その結果に非常に満足しています。

于 2009-12-12T07:02:21.547 に答える
59

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

ただし、初心者としては、タスクを分離したほうがよい場合があります。そのために、これを行います:

  1. デバイスを開きます: pdf("figures/myfile.pdf", height=6, width=6)
  2. Rオブジェクトをプロットします plot(1:10, type='l', main='boring') 。-そして、latticeとggplotには明示的なprintaroundが必要であることを忘れないでくださいplot
  3. 重要:デバイスを閉じます:dev.off() ファイルを完成させます。
  4. オプション:pdfファイルを検査します。
  5. LaTeXでは、usepackage{graphicx}ドキュメントヘッダーで使用
    \includegraphics[width=0.98\textwidth]{figures/myfile} し、前に作成した図を含めるために使用し、ファイル拡張子はオプションであることに注意してください。
  6. これを実行してpdflatexお楽しみください。
于 2009-12-11T19:59:55.250 に答える
22

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)

于 2009-12-11T19:12:31.760 に答える
3

これは私が見つけることができないSOに関する質問の重複です。

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

tikzを使用すると、ドキュメントの他の部分と一貫性のある外観が得られます。さらに、ラテックスを使用してグラフ内のすべてのテキストを植字します。

LaTeXをRプロットに取り込む編集

于 2009-12-11T21:48:33.060 に答える