在循环结束时重置图形:找不到函数 "device" 错误
Reset graph at the end of the loop :could not find function "device" error
我正在尝试通过循环生成绘图,这是我的代码:
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" )
}
以上代码出现以下错误:
Saving 6.67 x 6.67 in image
Error in ggsave("myplot_", i, plot = p, device = "jpg") : could
not find function "device"
早些时候,当我在循环结束时使用 dev.off() 时,我发现虽然正在生成图表,但它们完全是空白的。
有人可以帮助我了解我的代码中的错误在哪里吗?
您可以省略 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)
}
您所做的是创建一个新的默认图形设备,通常是一个绘图 window,然后是一个 jpeg 图形设备,即一个文件。然后你试图让 ggplot2 使用 ggsave 直接绘制到文件,即使用它自己的 (jpg) 设备,而不使用你创建的两个图形设备中的任何一个。
然而,这个错误是因为你给了 ggsave 错误的参数。但即使有正确的参数,您仍然会通过 dev.new()
和 jpeg()
命令得到额外未使用的图形 windows 和文件。我建议额外阅读一些帮助(例如,在 r 控制台键入 ?ggsave
)。
通常,在使用 ggplot2 时,您无需担心 dev.new
、jpeg
等问题。 qplot
或 ggplot
和 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"))
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" )
}
以上代码出现以下错误:
Saving 6.67 x 6.67 in image
Error in ggsave("myplot_", i, plot = p, device = "jpg") : could not find function "device"
早些时候,当我在循环结束时使用 dev.off() 时,我发现虽然正在生成图表,但它们完全是空白的。
有人可以帮助我了解我的代码中的错误在哪里吗?
您可以省略 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)
}
您所做的是创建一个新的默认图形设备,通常是一个绘图 window,然后是一个 jpeg 图形设备,即一个文件。然后你试图让 ggplot2 使用 ggsave 直接绘制到文件,即使用它自己的 (jpg) 设备,而不使用你创建的两个图形设备中的任何一个。
然而,这个错误是因为你给了 ggsave 错误的参数。但即使有正确的参数,您仍然会通过 dev.new()
和 jpeg()
命令得到额外未使用的图形 windows 和文件。我建议额外阅读一些帮助(例如,在 r 控制台键入 ?ggsave
)。
通常,在使用 ggplot2 时,您无需担心 dev.new
、jpeg
等问题。 qplot
或 ggplot
和 ggsave
应该可以满足您的所有需求。