我对 R 非常陌生,并尝试在 R 中使用绘图功能。在 linux 环境中使用 R
试图从名为“样本”的数据框中绘制数据
jpeg('rplot1.jpg')
plot(sample,cex=0.9,col="blue")
Error in plot.new() : figure margins too large
dev.off()
据我了解,我需要增加绘图面板的大小。不知道该怎么做。试过
我对 R 非常陌生,并尝试在 R 中使用绘图功能。在 linux 环境中使用 R
jpeg('rplot1.jpg')
plot(sample,cex=0.9,col="blue")
Error in plot.new() : figure margins too large
dev.off()
据我了解,我需要增加绘图面板的大小。不知道该怎么做。试过
您正在为函数提供一个列表(因为数据框是列表)plot
。请尝试:
plot(sample[[1]], sample[[2]], cex=0.9, col="blue")
澄清一下,将data.frame
所有数字列的 a 传递给plot
函数等效于调用pairs
以绘制所有列的散点图矩阵。你可能知道这一点。
据我所知,错误的原因仅仅是设备 ( jpeg
) 不够大,无法合理地包含整个散点图矩阵。例如,
mysamp <- matrix(rnorm(10000), nrow = 100)
mydat <- as.data.frame(mysamp)
plot(mydat)
# Error in plot.new() : figure margins too large
为了成功创建您的绘图,请将较大的值传递给 的width
和height
参数jpeg
。这是一个带有hwFact
参数的函数,该参数应该是一个数值,用于乘以 jpeg 的高度和宽度。
myFun <- function(data, hwFact = 1){
jpeg("rplot1.jpg", width = 500 * hwFact, height = 500 * hwFact)
plot(data, cex = .9, col = "blue")
dev.off()
}
下面的迭代使用上面的函数依次递增hwFact
,直到创建jpeg。成功创建 jpeg 后,将打印迭代编号并停止迭代。(这几乎是情节的最小尺寸,很可能太小而无法阅读任何内容。)
for(i in 1:20){
res <- tryCatch(myFun(mydat, i), error = function(e) e)
if(!"error" %in% class(res)) {
print(i)
break
}
}
# [1] 3
所以它需要一个宽度和高度为 1500(即 500 * 3)的 jpeg 来创建一个(完全难以辨认的)图。一旦你知道了最小尺寸,你就必须尝试找到合适的尺寸。