4

我正在用 ggplot2 在 R 中制作一堆折线图,我想将它们保存为 jpeg。但是,我想让图表更大或更高分辨率,这样如果您在查看图表时放大图表,它们看起来不会那么像素化。

这是一个代码片段:

library("ggplot2")

p <- ggplot(df1)

p <- p +
  geom_line(aes(time, ee_amt, colour="ee_amt"), size = 2) + 
  geom_point(aes(time, ee_amt, colour="ee_amt"), size = 2)

jpeg("G:\\Auto Parts\\sample.jpg")
  print(p)
dev.off()
4

3 回答 3

10

使用ggsave并指定dpi您想要的。

library(ggplot2)
df <- data.frame(x = 1:10, y = rnorm(10))
my_plot <- ggplot(df, aes(x,y)) + geom_point(size = 4)
ggsave(my_plot, file="sample.jpg", dpi = 600)
于 2012-09-04T23:01:31.847 回答
4

将绘图保存为 PostScript,并使用ImageMagick convert以所需的密度转换为 JPEG,例如:

ggsave(my_plot, file="foo.ps")

然后,制作 300 dpi JPEG 版本:

$ convert foo.ps -density 300 foo.jpeg

您将拥有一个较小的文件,可以以任何所需的分辨率和 ImageMagick 支持的任何位图格式进行渲染。

如果这是针对网络的,请考虑转换为 SVG 或 PDF 格式:

$ convert foo.ps foo.svg

您可以非常轻松地将 SVG 嵌入iframe其中,与高分辨率位图相比,这有助于以小文件大小进行平滑缩放。

于 2012-09-04T23:05:18.653 回答
0

我不推荐 png():ggsave() 或 jpeg() 是更好的选择。要使用 png() 直接控制分辨率,请使用:

library("ggplot2")

p <- ggplot(df1)

p <- p +
geom_line(aes(time, ee_amt, colour="ee_amt"), size = 2) + 
geom_point(aes(time, ee_amt, colour="ee_amt"), size = 2)

W = 1680
H = 1050

png("test.png", width = W, height = H)
print(p)
graphics.off()

这同样适用于 jpeg()。

于 2012-09-05T08:24:32.163 回答