2

我对 R 非常陌生,并尝试在 R 中使用绘图功能。在 linux 环境中使用 R

试图从名为“样本”的数据框中绘制数据

jpeg('rplot1.jpg')
plot(sample,cex=0.9,col="blue")
Error in plot.new() : figure margins too large
dev.off()

据我了解,我需要增加绘图面板的大小。不知道该怎么做。试过

4

2 回答 2

1

您正在为函数提供一个列表(因为数据框是列表)plot。请尝试:

plot(sample[[1]], sample[[2]], cex=0.9, col="blue")
于 2012-11-09T23:19:48.597 回答
1

澄清一下,将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

为了成功创建您的绘图,请将较大的值传递给 的widthheight参数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 来创建一个(完全难以辨认的)图。一旦你知道了最小尺寸,你就必须尝试找到合适的尺寸。

于 2012-11-10T21:31:30.957 回答