我试图绘制一系列具有不同变量集的散点图。在这样做时,我使用" paste"将两个(或更多)变量名称组合为
plot.name <- paste(paste("var1.name", "var2.name",..., sep="_"), "plot.png", sep=" ")
然后我在&#34; ggsave&#34;中使用此名称如
ggsave(plot.name, width=7.5, height=5, units="in", dpi=300)
每次我试着
Error in grDevices::png(..., res = dpi, units = "in") : unable to start png() device
In addition: Warning messages:
1: In grDevices::png(..., res = dpi, units = "in") : unable to open file 'plot.name'
2: In grDevices::png(..., res = dpi, units = "in") : opening device failed
只有当我使用&#34; paste&#34;创建的地图名称时才会发生这种情况。包含2个或更多变量名称但如果我只使用&#34; plot.png&#34;则不会发生这种情况。或单个字符的线程(&#34; xxx xxx xxx xxx.png&#34;)。所有类型的设备(jpg等)都会发生这种情况。有没有人知道为什么一个简单的名称有效但不是由&#34;粘贴&#34;不保存图像?这从来就不是问题,但是当我尝试使用Rstudio时它就开始发生了。我通常在Tinn-R中写入所有代码,然后将它们导出到R。
以下是更多细节。
4个变量的名称是;
x.var.actual.name.list <-
c("Elev.Nov.Prev.2.mo", "Sal.Fall", "ArtBio.Sep.Prev", "min.temp.Sep.Prev.2.mo")
输入数据框为:
df.in <- combined.df[,c(y.var, x.var.actual.name.list)]
Total Elev.Nov.Prev.2.mo Sal.Fall ArtBio.Sep.Prev min.temp.Sep.Prev.2.mo
10.158711 6381.35 83.05407 17.143527 48.27
10.684462 6381.00 83.64119 22.075855 49.38
10.849221 6380.30 84.70405 26.175721 46.06
10.021848 6381.55 82.23643 20.024815 47.19
10.019090 6384.15 77.78226 17.459871 47.13
10.171566 6382.55 80.97417 21.180415 49.33
...
例如,我使用&#34; ggcorr&#34;从GGally包到绘图相关矩阵;
require(GGally)
cor.scatter.png.file <- paste(paste(x.var.actual.name.list, collapse=" "),
"correlation scatter plot matrix.png", sep=" ")
cor.mat.plot <- ggcorr(df.in,2, palette = "RdYlGn", name = "r",label = T,
label_color = "black", label_round = 2)
ggsave(cor.scatter.png.file, width=7.5, height=5, units="in")
以上描述会导致错误;
Error in grDevices::png(..., res = dpi, units = "in") :
unable to start png() device
In addition: Warning messages:
1: In grDevices::png(..., res = dpi, units = "in") :
unable to open file 'Elev.Nov.Prev.2.mo Sal.Fall ArtBio.Sep.Prev
min.temp.Sep.Prev.2.mo correlation scatter plot matrix.png' for writing
2: In grDevices::png(..., res = dpi, units = "in") : opening device failed
但如果我执行以下操作(不使用名称的粘贴部分),则可以正常工作。
ggsave("correlation scatter plot matrix.png", width=7.5, height=5, units="in")
带有粘贴名称的第一个脚本之前有效,但在我尝试在Rstudio中运行相同的脚本后停止工作。现在我随时使用粘贴的名称R返回错误消息。我卸载了Rstudio和R并重新安装了R,但同样的问题仍然存在。我感谢任何解决此问题的建议。
答案 0 :(得分:1)
使用简单的情节,我无法重现您的问题。
1: In cv.lm(mod, data = X, m = n) :
As there is >1 explanatory variable, cross-validation
predicted values for a fold are not a linear function
of corresponding overall predicted values. Lines that
are shown for the different folds are approximate
2: In plot.xy(xy, type, ...) : unimplemented pch value '30'
3: In plot.xy(xy, type, ...) : unimplemented pch value '26'
4: In plot.xy(xy, type, ...) : unimplemented pch value '27'
5: In plot.xy(xy, type, ...) : unimplemented pch value '31'
6: In plot.xy(xy, type, ...) : unimplemented pch value '28'
7: In plot.xy(xy, type, ...) : unimplemented pch value '29'
上面的代码对我来说非常好。尝试使用df <- data.frame(a = rnorm(100,0,1), b=rnorm(100,0,1))
ggplot(df, aes(x=a, y=b)) + geom_point()
plot.name <- paste(paste("var1.name", "var2.name", sep="_"), "plot.png", sep=" ")
ggsave(plot.name, width=7.5, height=5, units="in", dpi=300)
代替sep="_"
;文件名不应包含空格或特殊字符,例如*。 “/ \ []:; | =,&lt; ? &GT; &安培; $#! '{}()。
此外,RStudio可能会遇到在后台运行的图形设备的问题;您可以尝试使用sep=" "
退出在后台运行的打开的图形设备。
编辑:
不幸的是,通过示例找到解决方案并不容易。这是一个可重现的版本:
dev.off()
请注意,我必须在ggcorr()中使用“digits = 2”扩展“2”以使代码运行,希望这是正确的参数。 但是,代码仍然适用于我。您可能也想查看此主题:ggsave png error with larger size
答案 1 :(得分:0)
我试图绘制多个数据进行聚类分析。我将代码放入 for 循环以自动生成数字。但是,它给出了.png和.bmp类型数字的错误。后来,我意识到,因为我使用的是 paste 函数,所以代码使用的是列名,并且有一个“\”导致错误。在数据集中,我只是将“\”替换为“_”,问题就解决了。希望这对每个人都有帮助。