plot.new()中的错误:R中的数字边距太大

时间:2012-10-07 04:37:31

标签: r plot

我是R的新手但是我已经制作了许多具有较小数据集的相关图。但是,当我尝试绘制一个大型数据集(2gb +)时,我可以很好地生成绘图,但图例不会显示。有什么建议?还是替代品?

library(gplots)
r.cor <- cor(r)
layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
par(oma=c(5,7,1,1))
cx <- rev(colorpanel(25,"yellow","black","blue"))
leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]], 
    cex.axis=0.9,las=2)
axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]],
     cex.axis=0.9,las=2)
image(as.matrix(leg),col=cx,axes=T)     
  

plot.new()出错:数字边距过大

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)

14 个答案:

答案 0 :(得分:135)

Rstudio中可能会发生此错误,因为您的&#34; Plots&#34;窗格只是勉强太小。尝试缩放你的&#34;文件,图,包,帮助,查看器&#34;并看看它是否有帮助!

答案 1 :(得分:74)

我怀疑问题是你的layout()调用创建的小数字区域2不够大,只能包含默认边距,更不用说情节。

在导致问题的行之前尝试:

par(mar = rep(2, 4))

然后绘制第二张图像

image(as.matrix(leg),col=cx,axes=T)

你需要在我展示的par()来电时调整边距的大小才能做到这一点。您可能还需要增加您正在绘制的实际设备的大小。

最后提示,在更改之前保存par()默认值,因此请将现有的par()调用更改为:

op <- par(oma=c(5,7,1,1))

然后在绘图结束时做

par(op)

答案 2 :(得分:60)

如果您在RStudio中收到此消息,点击&#39;扫帚栏&#39;图&#34;清除所有图&#34;在Plots选项卡中并再次尝试plot()可能会有效。

enter image description here

答案 3 :(得分:18)

我在R Studio中遇到了这个错误,只需通过点击并从右向左拖动边栏使侧边栏更大来修复。

答案 4 :(得分:18)

这有时会发生在RStudio中。为了解决这个问题,您可以尝试绘制到外部窗口(仅限Windows):

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 

答案 5 :(得分:9)

检查您的对象是列表还是向量。为此,请键入is.list(yourobject)。如果是这样,请尝试重命名x<-unlist(yourobject)。这将使它成为你可以绘制的矢量。

答案 6 :(得分:5)

enter image description here

如果您使用RStudio,只需缩放此区域。

答案 7 :(得分:2)

当我试图绘制高维数据时,我遇到了这个错误。如果这就是您的情况,请尝试多维缩放:http://www.statmethods.net/advstats/mds.html

答案 8 :(得分:2)

我在这个错误中挣扎数周(使用RStudio)。我试图将绘图窗口移动得越来越小,但这并没有一直有所帮助。当我将应用程序移动(拖动)到我的大显示器时,问题就消失了!我被惊呆了......这么多浪费时间......我知道我的代码是正确的......

答案 9 :(得分:0)

RStudio Plots画布限制了绘图宽度和高度。但是,如果您使用 Rmarkdown 代码块创建绘图,则无需画布字段限制,因为绘图区域根据纸张大小设置。

例如:

    ```{r}
#inside of code chunk in Rmarkdown
        grid <- par(mfrow=c(4, 5))
        plot(faithful, main="Faithful eruptions")
        plot(large.islands, main="Islands", ylab="Area")
        ...
        par(grid)
    ```

答案 10 :(得分:0)

我今天发现了这个错误。最初,我试图将其输出到宽度和高度较低的.jpeg文件。

jpeg("method1_test.jpg", width=900, height=900, res=40)

后来我将宽度和高度增加到:

jpeg("method1_test.jpg", width=1900, height=1900, res=40)

错误不存在。 :)

你也可以使用分辨率,如果分辨率很高,你需要更多的宽度和高度。

答案 11 :(得分:0)

我今天发现了同样的错误。我已经尝试过“清除所有图表”按钮,但这给了我同样的错误。然后这个技巧对我有用, 尝试通过拖动来增加绘图区域。肯定会对您有帮助。

答案 12 :(得分:0)

我刚刚使用了“清除所有图”,然后再次给出“ plot”命令,这很有帮助

答案 13 :(得分:0)

如果边距较低,那么最好从新的绘图设备开始:

  // Create the request
            LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_ONLY);
            LoginManager.getInstance().logInWithReadPermissions(cordova.getActivity(), permissions);

除非您绘制了无法容纳的较大的东西,否则您永远不会得到边距误差。