【问题标题】:How to change current Plot Window Size (in R)如何更改当前的绘图窗口大小(在 R 中)
【发布时间】:2011-01-22 23:09:41
【问题描述】:

例如。假设我这样做:

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

现在我想做

plot(1:40)

但我想要一个更大的窗口。

我猜想这样做的方法是(假设我不想打开新窗口)做

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

这当然行不通。

我看到的唯一解决方案是关闭窗口并启动一个新窗口。 (这将结束我的阴谋历史)

有没有更好的办法?

谢谢。

【问题讨论】:

  • Tal-从您的示例(宽度增加 2 倍)看来,您希望能够大幅增加绘图区域。如果您想要的绘图区域增加较小,那么您可以将四个边距向后移动,例如 par(mar=c(3.0, 3.0, 1.5, 1.5))
  • 你想调整当前窗口的大小?
  • 一旦窗口打开,它就“属于”窗口管理器。我不知道任何允许您调整窗口大小和已打开窗口的调用。您可以在代码中作弊和模拟“鼠标激活窗口并放大”,但它让我觉得成本/收益比很差。
  • 您好 Doug、Shane 和 Firk - 感谢您的回答。我的情况是我要就 R 进行演讲。在那次演讲中,我打算在 par(mfrow = c(1,1)) 到 par(mfrow = c(1,2)) 之间来回切换。这会损坏图像比例并迫使我调整窗口大小。我在代码中找到的唯一解决方案是关闭并打开一个新窗口,但这消除了我存储绘图历史记录的能力。我希望我的问题现在更清楚了。最好的,塔尔
  • 帮助(dev.new)和帮助(dev.set)

标签: graphics r window plot base


【解决方案1】:

一些解决方法可能是使用这个应该跨平台工作的函数而不是使用 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)"
【解决方案2】:

这是我的解决方案:

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))

【讨论】:

  • 那将是“仅适用于 Windows”。正如 Brian Ripley 试图向您解释的那样,没有其他系统具有 windows 的功能。
  • 嗨 Dirk,感谢您提及这一点(另请注意我在代码中编写了它)。但我想这也是……最好的,塔尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 2016-03-23
  • 2021-04-17
  • 1970-01-01
  • 2022-07-08
  • 2011-08-30
相关资源
最近更新 更多