web-dev-qa-db-ja.com

Rプロット要素をPDF設定された幅と高さの範囲内で

PDFに送信されたRプロットは、イラストまたはページレイアウトソフトウェアで自由に再スケーリングできますが、科学雑誌では、提供されたプロットに特定の次元があると主張することがよくあります。

すべてのプロット要素のサイズは、指定されたPDF Rで直接サイズ内でスケーリングできますか?

require(ggplot2)

p <- qplot(data=iris,
           x=Petal.Width,
           y=Petal.Length,
           colour=Species)

pdf("./test_plot_default.pdf")
print(p)
graphics.off()

プロット要素の適切なスケーリングを生成します

test plot with default pdf size

ただし、PDFサイズ要素を変更しても、プロット要素は拡大縮小されません。PDFが小さい場合、プロット要素はプロット空間に比べて過度に拡大されます。

pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()

enter image description here

@Rosen Matevの提案を使用:

update_geom_default("point", list(size=1))
theme_set(theme_grey(base_size=6))
pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()

enter image description here

22

ジャーナルは、スケーリングを回避するために特定のプロット寸法を持つことを主張します。作成した場合、フォントサイズが小さすぎる(または大きい)ので、図のキャプションのフォントサイズと矛盾する可能性があります。これが、設計によるプロット要素(テキスト、ポイントサイズなど)がpdfサイズに関係なく同じ絶対サイズを持つ理由です。

デフォルトのフォントサイズとポイントサイズは、たとえば次の方法で変更できます。

p <- ggplot(iris, aes(x=Petal.Width, y=Petal.Length, colour=Species)) +
  geom_point(size=1.5) +  # default is 2
  theme_grey(base_size=10)  # default is 12
ggsave("test.1.pdf", p)

デフォルトもグローバルに変更できます。

update_geom_defaults("point", list(size=1.5))
theme_set(theme_grey(base_size=10))
6
Rosen Matev

奇妙なことに、ggsave(...)scale=でこれを行うことができます

require(ggplot2)
p <- qplot(data=iris, x=Petal.Width, y=Petal.Length, colour=Species)
ggsave("test.1.pdf",p)
ggsave("test.2.pdf",p, width=3, height=3, units="in", scale=3)

scaleパラメーターを試してみて、何が得られるかを確認してください...

4
jlhoward

Pdf()関数でwidthheightおよびpointsizeの使用を検討してください。

Sweaveを使用するなどの他の方法の代わりにpdf()を使用したい場合は、次のようなより多くの引数を使用してpdf関数を使用することをお勧めします(ggplot2がインストールされていないため、類似のケースが提供されます)。

# making scaled plot in pdf
# using paper=a4 just to see the efect

for (sc in c(0.5,0.75,1)) {
pdf(width=7*sc,height=7*sc,pointsize=12*sc,file=paste("scale",sc,".pdf",sep=""),paper="a4")
plot(sin((1:314)/100),main=paste("PDF sc",sc))
dev.off()  
}

かなり使いやすいですが、ある程度は機能します。縮尺が小さすぎると、pdfは線幅、フォントサイズなどを強制し始めます。

例で作成されたscale * .pdfの結果を参照してください。

およびggplot2の場合...

sc <- c(0.5,0.75,1)
fi <- c("pic1.pdf","pic2.pdf","pic3.pdf")

require(ggplot2)
p <- qplot(data=iris,
x=Petal.Width,
y=Petal.Length,
colour=Species)

for (i in 1:3) {
pdf(width=7*sc[i],height=7*sc[i],pointsize=12*sc[i],file=fi[i])
print(p)
dev.off()  
}

1つのドキュメントでファイルがどのように見えるかをテストするためのラテックスコード:

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphics}

\begin{document}

\begin{figure}
     \includegraphics{pic1.pdf}
 \end{figure}

\begin{figure}
     \includegraphics{pic2.pdf}
\end{figure}

\begin{figure}
    \includegraphics{pic3.pdf}
\end{figure}

\end{document}
3
Petr Matousu

PDFと同等またはそれ以上のオプションはtiffです。私が出会ったすべてのジャーナルはtiffのようです。

tiff(filename="name.tiff", width=5, height=5, units="in",
     pointsize=8, compression="lzw", bg="white", res=600,
     restoreConsole=TRUE)
qplot(data=iris, x=Petal.Width, y=Petal.Length, colour=Species)
dev.off()

Linuxを使用している場合は、restoreConsole=TRUE、Windowsだけがそれを気に入っているようです。

0
JeremyS