12

次のコード スニペットに問題があります。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{myscatterplot.pdf}
\end{document}

「myscatterplot.pdf」は、R の次のコードによって生成されます。

library(scatterplot3d)
pdf("myscatterplot.pdf")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()

問題は、texworks (pdfLatex+makeindex+bibtex) でコンパイルしたときの結果の LaTeX ドキュメントにはグラフ軸がありますが、プロットまたは軸ラベルのポイントがまったくないことです (この場合、それは 3d 軸自体です)。R または LaTeX によって出力されるエラーまたは警告メッセージはありません。私は使っている:

  • Windows 7 の R 2.12.1、
  • MiKTeX 2.8、
  • TeXworks
  • Adobe Reader 9 (これが関連しているかどうかはわかりません...)

\includegraphics コマンドを使用して図の png バージョンを含めることができました。adobe で「myscatterplot.pdf」を開くと、ドキュメントに必要な図が表示されます。

回避策として tikz パッケージを使用しようとしましたが、scatterplot3d によって生成された情報が多すぎて、メモリ サイズが原因で結果の図をラテックス ドキュメントに含めることができないようです (エラー (実際のプロットには 10000 + ポイントがあります! )。

問題は「.pdf」ファイルのフォントが原因である疑いがありますが、使用してpdfフォントを変更しようとしました

pdf("changefont.pdf")
par(family = "Helvetica")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()

\includegraphics(changefont.pdf) を使用した場合とまったく同じ結果になります。

私が考えている他の考えられる問題は、おそらく scatterplot3d 出力が実際には複数の画像であり、\includegraphics が pdf ファイルから最初の図 (軸) のみを取得していることです。この場合、私はまだそれを回避する方法がわかりません。

最終的には Sweave を使用してこれらすべてを実行したいので、回避策があれば本当にありがたいのですが、そうでなければパッケージの美しい出力に不満を感じています!

ご回答ありがとうございます。

編集1:

そのため、最初に推奨されたのは、pdf ではなく EPS 形式を使用することでした。これにより、いくつかの結果が得られましたが、私が望んでいたものではありませんでした。私は以下を実行しました:

\documentclass{article}
\usepackage{graphicx,epstopdf}
\begin{document}
\begin{figure}
\includegraphics[angle = 270, width= 6in, keepaspectratio=true]{change.eps}
\end{figure}
\end{document}

を使用して「change.eps」を生成しました

postscript("change.eps")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()

これにより、改善得られました (奇妙なことに、ラテックス出力でプロットが時計回りに 90 度回転したにもかかわらず!)、ラテックス出力に散布図の軸とポイントが含まれるようになりました! ただし、ghostview を使用して "change.eps" を開いても、軸ラベルは Figure に表示されず、軸はプロット内にあります。scatterplot3d が図を出力する方法は、 \includegraphics が図を検索する方法と一致しないようです...

そのため、軸ラベルを含むこれに対する解決策をまだ探しています。

4

6 に答える 6

5

リストしたコマンドで生成された myscatterplot.pdf を見ると、軸とラベルがあります。ただし、pdf はかなり大きい (7 インチ x 7 インチ)。

pdf() の重量/高さパラメータをいじると役に立ちますか?

pdf("myscatterplot.pdf", height=3.5, width=3.5)
于 2011-01-24T10:12:59.503 に答える
4

これは、使用可能なメモリを超える LaTeX に関連する補足事項です。

あなたの例を tikzDevice で使用していくつかのストレステストを行ったところ、結果は使用されている TeX エンジンに大きく依存しているようです。特に注目すべきはluatex、 の後継pdftexであり、多くのグラフィック要素を含むプロットを処理できることが証明されています。

  • pdflatex:

    プロットを 1000 ポイントで通過し、メモリを超えて 10,000 で死亡しました。

  • xelatex:

    10,000ポイントでメモリーもオーバーして死亡。

  • lualatex:

    約 45 秒で 10,000 ポイントを咀嚼し、1 MB の PDF ファイルを生成しました。約 7.5 分で 100,00 ポイント (10 MB の入力ファイル) を処理し、8.5 MB の PDF ファイルを吐き出し、最大で 750 MB のメモリ使用量に達しました。100 万のベンチマークは試していません。

プログラムが起動すると、すべてのメモリが前もって割り当てられるように見えますが、それがすべてpdftexです。一方、メモリを動的に割り当てることができるように見えるため、利用可能なRAMの量によってのみ制限されます。xetexluatex

pdflatexで「メモリ不足」エラーが発生する場合は、試してみてくださいlualatex


これらのテストは、TeX Live 2010 ディストリビューションに含まれている TeX コンパイラを使用して行われました。私は tikzDevice の作成者の 1 人でもあります。

于 2011-04-18T02:27:18.720 に答える
3

Sweaveを試すことができます:http://www.statistik.lmu.de/~leisch/Sweave/(Sweaveは、ラテックスドキュメントに完全なデータ分析を行うためのRコードを埋め込むことができるツールです)

于 2011-01-24T11:00:12.217 に答える
1

私は実際にまったく同じ問題(TexWorks、pdfLatex、Windows 7)でここに来ました。そして、興味深いことがわかりました.Latexを最初に起動したとき、図は軸とすべて一緒に表示され、pdfLatexを再実行すると、軸が再び消えました. これは私に予感を与え、私はそれを理解しました.Latexプレビューには軸が表示されませんが、PDF形式には表示されます。\includegraphicsまた、グラフィックが PDF 形式であることをコマンドに伝える必要さえありません。

pdf("C:/Users/Orr/Documents/Leiden University/Master thesis/Chapters/Images/bioRes/Boxplots mouse raw data.pdf")
boxplot(mouse_data_raw,main="Mouse raw data")
dev.off()

\begin{figure}[t]
\includegraphics[scale=0.5]{mouse-box-raw}
\includegraphics[scale=0.5]{human-box-raw}
\end{figure}
于 2011-09-11T14:04:44.503 に答える
1

ファイルに pdf 画像を挿入する場合は、標準の latex の代わりに pdflatex を使用する必要があると思います。それがインストールされていない場合は、pdf ではなく、R から eps 形式で図を生成してみます。

于 2011-01-24T03:15:37.937 に答える
1

同様の問題に苦労したことを思い出します。ただし、図にラベルが表示されたかどうかは覚えていません。コードを振り返ってみると、R レベルで変更した 2 つのパラメーターがあります。

par(xpd=NA)
par(oma=c(3, 3, 0, 0))

また、グラフを 90 度回転させないようにするための Postscript の場合:

postscript(file="xx.eps", horizontal=FALSE)

HTH

于 2011-01-24T08:45:08.073 に答える