我试图通过循环生成图,这是我的代码:
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()时,我发现虽然生成的图表完全是空白的。
有人可以帮我理解我的代码中的错误在哪里吗?
答案 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.new
,jpeg
等。 qplot
或ggplot
和ggsave
可以随心所欲。