在循环结束时重置图形:找不到功能"设备"错误

时间:2015-04-13 20:40:22

标签: r ggplot2

我试图通过循环生成图,这是我的代码:

n <- unique(wide_data$Product.Code)[1:3]

for (i in n)

{


my.prod2 <- filter(tall_bind, Product.Code == i, Date > ymd("2012/04/01"))

dev.new()

mypath <- file.path("C:","R","SAVEHERE",paste("myplot_", i, ".jpg", sep = ""))

jpeg(file=mypath)

mytitle = paste("Plot for product", i)

p <- qplot(Date, Sold, data = my.prod2, geom = "line", main=mytitle, group = Model, colour = Model) + facet_grid(Model ~ .)

ggsave("myplot_", i, plot=p, device= "jpg" )

}

上述代码出现以下错误:

  

在图像中保存6.67 x 6.67

     

ggsave错误(&#34; myplot _&#34;,i,plot = p,device =&#34; jpg&#34;):can   找不到功能&#34;设备&#34;

早些时候,当我在循环结束时使用dev.off()时,我发现虽然生成的图表完全是空白的。

有人可以帮我理解我的代码中的错误在哪里吗?

1 个答案:

答案 0 :(得分:1)

您可以省略dev.new()和jpg()命令,并且您对ggsave()的参数也是错误的。这应该有效:

n <- unique(wide_data$Product.Code)[1:3]
for (i in n) {
    my.prod2 <- filter(tall_bind, Product.Code == i, Date > ymd("2012/04/01"))
    mypath <- file.path("C:","R","SAVEHERE",paste("myplot_", i, ".jpg", sep = ""))
    mytitle = paste("Plot for product", i)
    p <- qplot(Date, Sold, data = my.prod2, geom = "line", main=mytitle, group = Model, colour = Model) + facet_grid(Model ~ .)
    ggsave(filename = mypath, plot = p)
}

你所做的是创建一个新的默认图形设备,通常是绘图窗口,然后是jpeg图形设备,即文件。然后你试图让ggplot2使用ggsave直接绘制文件,即使用自己的(jpg)设备,而不是使用你创建的两个图形设备。

然而,错误是因为你给了ggsave错误的参数。但即使使用正确的参数,您仍然可以通过dev.new()jpeg()命令获得额外的未使用的图形窗口和文件。我建议额外阅读一些帮助(例如在r控制台上键入?ggsave)。

通常,在使用ggplot2时,您无需担心dev.newjpeg等。 qplotggplotggsave可以随心所欲。