如何更改当前绘图窗口大小(在R中)

19

例如,假设我执行以下操作:

dev.new(width=5, height=4)
plot(1:20)

现在我希望做的是

plot(1:40)

但是我希望它的窗口更大。

我猜想,假设我不想打开一个新窗口,那么做法应该是:

plot(1:40, width=10, height=4)

当然,这种方法行不通。

我唯一看到的解决方法是关闭窗口并打开一个新窗口。(这将结束我的绘图历史记录)

有更好的方法吗?

谢谢。


从你的例子中(宽度增加2倍),似乎你想要能够大幅增加绘图区域。如果你只是想要稍微增加绘图区域,那么你可以将四个边距向后移动,例如:par(mar=c(3.0, 3.0, 1.5, 1.5))。 - doug
2
你想调整当前窗口的大小吗? - Shane
一旦窗口打开,它就“属于”窗口管理器。我不知道是否有任何调用可以让您调整已经打开的窗口大小。您可以通过代码模拟“鼠标激活窗口并放大”的方式来欺骗系统,但我认为这样做成本效益比较低。 - Dirk Eddelbuettel
你好,Doug、Shane和Firk - 感谢你们的回答。我的情况是我要讲授R语言。在那个讲座中,我打算在par(mfrow = c(1,1))和par(mfrow = c(1,2))之间来回切换。这将破坏图像比例,并迫使我调整窗口大小。我在代码中找到的唯一解决方案是关闭并打开一个新窗口,但这会删除我存储绘图历史记录的能力。我希望我的问题现在更清晰了。最好, Tal - Tal Galili
1
help(dev.new) 和 help(dev.set) - Dirk Eddelbuettel
2个回答

13

可以采用以下方法解决问题,而不是使用dev.new() R函数。该函数应该适用于各种平台:

 dev.new <- function(width = 7, height = 7) 
 { platform <- sessionInfo()$platform if (grepl("linux",platform)) 
 { x11(width=width, height=height) } 
 else if (grepl("pc",platform)) 
 { windows(width=width, height=height) } 
 else if (grepl("apple", platform)) 
 { quartz(width=width, height=height) } }

在我的系统上,sessionInfo()$platform 返回 "x86_64-w64-mingw32/x64 (64-bit)" - Ana Nimbus

10

以下是我的解决方案:

resize.win <- function(Width=6, Height=6)
{
        # works for windows
    dev.off(); # dev.new(width=6, height=6)
    windows(record=TRUE, width=Width, height=Height)
}
resize.win(5,5)
plot(rnorm(100))
resize.win(10,10)
plot(rnorm(100))

5
那是“仅适用于Windows”。没有其他系统有一个名为windows的功能,正如Brian Ripley试图向您解释的那样。 - Dirk Eddelbuettel
嗨,Dirk, 感谢你提到这个问题(请注意我已经在代码中写了它)。 但我想这也是一个问题...最好的祝福, Tal - Tal Galili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接