plot.new()出错:数字边距太大,无法弄清楚为什么?

时间:2012-11-09 22:41:41

标签: r

我是R的新手,正在尝试使用R中的绘图功能。在Linux环境中使用R

尝试从名为'sample'

的数据框中绘制数据
jpeg('rplot1.jpg')
plot(sample,cex=0.9,col="blue")
Error in plot.new() : figure margins too large
dev.off()

根据我的理解,我需要增加绘图面板的大小。不知道怎么做。已经

2 个答案:

答案 0 :(得分:1)

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

plot(sample[[1]], sample[[2]], cex=0.9, col="blue")

答案 1 :(得分:1)

只是澄清一下,将data.frame所有数字列传递给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的{​​{1}}和height参数。这是一个带有jpeg参数的函数,该函数应该是一个数值,用于乘以jpeg的高度和宽度。

hwFact

以下迭代使用上述函数连续增加myFun <- function(data, hwFact = 1){ jpeg("rplot1.jpg", width = 500 * hwFact, height = 500 * hwFact) plot(data, cex = .9, col = "blue") dev.off() } ,直到创建jpeg。成功创建jpeg后,将打印迭代编号并停止迭代。 (这几乎是情节的最小尺寸,很可能太小而无法阅读。)

hwFact

所以它需要一个宽度和高度为1500(即500 * 3)的jpeg来创建一个(完全难以辨认的)情节。一旦知道最小尺寸,就必须尝试找到合适的尺寸。