2012-09-04 71 views
4

我正在用ggplot2在R中创建一大堆线图,我想将它们保存为jpegs。但是,我想使图形更大或更高的分辨率,以便在查看图形时放大图形,看起来不像。在ggplot2中创建一个图形

这里有一个代码片段:

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

+ 1为Jebediah斯普林菲尔德(辛普森)参考! – mnel

回答

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) 
+4

我也建议使用'jpg'以外的东西,因为这是一种有损格式。如果你想要矢量图形,缩放不成问题,可能是'png','svg','pdf'或'postscript'(甚至是'tikz')。 – mnel

+0

伟大的补充,@ mnel。 – Maiasaura

+0

太好了,谢谢。出于某种原因,这将无法使用600 dpi(我得到这个错误消息,“错误grDevices ::无法启动设备”)。但我将其改为300 dpi,并且运行良好。 – aesir

4

保存地块为PostScript和使用ImageMagickconvert转换为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 

您可以在iframe嵌入SVG很容易地,并且这有利于平滑缩放与小的文件大小,用比较高分辨率位图。

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工作()。