我很新的R和試圖在R.使用繪圖功能在Linux環境在plot.new()中出現錯誤:圖邊距過大,找不到原因?
基於R試圖從一個名爲「樣本」
jpeg('rplot1.jpg')
plot(sample,cex=0.9,col="blue")
Error in plot.new() : figure margins too large
dev.off()
數據幀從我明白我繪製數據需要增加繪圖面板的大小。不知道如何去做。已完成
我很新的R和試圖在R.使用繪圖功能在Linux環境在plot.new()中出現錯誤:圖邊距過大,找不到原因?
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
到plot
功能等同於調用pairs
暗算對方的所有列的散點圖矩陣。你可能知道這一點。
據我所知,錯誤的原因很簡單,設備(jpeg
)不夠大,不足以合理地包含整個散點圖矩陣。例如,
mysamp <- matrix(rnorm(10000), nrow = 100)
mydat <- as.data.frame(mysamp)
plot(mydat)
# Error in plot.new() : figure margins too large
爲了成功創建您的情節,通過較大的值的jpeg
的width
和height
參數。這是一個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
所以它採取了JPEG與1500的寬度和高度(即500 * 3 )創建一個(完全難以辨認的)情節。一旦你知道最小尺寸,你將不得不嘗試找到合適的尺寸。
我在centOS(R 2.15.1)和MacOS GUI(R 2.15.0)上測試了您的代碼,它對我來說非常適合。 – bdemarest
感謝您的測試。但是我不確定爲什麼這個錯誤對我來說。我測試了紅帽(R 2.15.1)和窗(R 2.15.2) –