【问题标题】:Reset par to the default values at startup在启动时将 par 重置为默认值
【发布时间】:2011-08-12 23:55:16
【问题描述】:

通常当我制作自己的绘图函数时,我会制作一个构造:

op <- par("mypar"=myvalue)
on.exit(par(op))

这是将par 恢复为先前值的标准方法。想象一下,您一直在运行一些确实更改了某些 pars 的函数,并且您需要在 R 启动时重置为默认值。这样做的方便方法是什么?

或者换句话说:如何达到par() 的默认值?

【问题讨论】:

  • 我的印象是每次新的图形设备启动时,它都会被赋予默认值。
  • @James 他们这样做了,但我认为@Joris Q 的主旨是,如果没有保存默认值,是否有办法重置当前设备的 pars。换句话说,我们如何确定设备的默认 pars,而不是当前 pars。
  • @Gavin Simpson 好吧,但是 dev.new()dev.off() 可以使用
  • @James 确实;我在 R 标签聊天室向@Joris 提到了这一点,但我们想要一个不那么老套的解决方案 :-)

标签: r default par


【解决方案1】:

每次打开新设备时 par() 都会重置,因此另一个选项是简单地执行 dev.off() 并继续。

【讨论】:

  • 在所有提供的回复中,这是唯一真正回答所提问题的回复。
  • @DarkHalo 如果我们要在 pdf 中有多个绘图,那么 dev.off() 不会是一个糟糕的选择吗?因为这会关闭pdf 设备,因此无法在单个 pdf 中包含多个绘图
【解决方案2】:

这很老套,但是:

resetPar <- function() {
    dev.new()
    op <- par(no.readonly = TRUE)
    dev.off()
    op
}

按时尚工作,但它确实会暂时在屏幕上闪烁新设备...

例如:

> par(mfrow = c(2,2)) ## some random par change
> par("mfrow")
[1] 2 2
> par(resetPar())     ## reset the pars to defaults
> par("mfrow")        ## back to default
[1] 1 1

【讨论】:

  • 避免尝试重置可能会通过调整大小而更改的项目(如 mai、mar、pin、plt 和 pty)可能更安全(正如 par 帮助页面中所警告的那样。)
  • 在 R-help 上讨论​​过类似的想法:tolstoy.newcastle.edu.au/R/e2/help/07/09/26665.html
  • 没有找到其他东西,所以必须这样做。
  • 我收到以下错误消息“警告消息:在(函数()中:只允许一个 RStudio 图形设备”
  • @h.l.m 那就太难了;只能有一个这样的设备,并且由于 R 不存储默认值,因此现在可以轻松地抓住它们。向 RStudio 人员询问这一点。或者,不要在不存储默认值的情况下更改 par()。或者通过.Rprofile 安排在启动时获取默认值。
【解决方案3】:

来自Quick-R

par()              # view current settings
opar <- par()      # make a copy of current settings
par(col.lab="red") # red x and y labels 
hist(mtcars$mpg)   # create a plot with these new settings 
par(opar)          # restore original settings

【讨论】:

  • 我知道那个,但是如果您之前更改过默认值,它不会恢复默认值。 par() 显示当前设置,而不是默认设置。
  • 这个解决方案在这种情况下可能不起作用,但让我们把它留在这里作为一种不起作用的方法。
【解决方案4】:

防止函数更改用户par 的替代解决方案。您可以在函数的早期设置默认参数,以便在函数执行过程中不会更改图形参数和布局。详情请见?on.exit

on.exit(layout(1))
opar<-par(no.readonly=TRUE)
on.exit(par(opar),add=TRUE,after=FALSE)

【讨论】:

    【解决方案5】:

    使用下面的脚本恢复正常的 1 情节:

    par(mfrow = c(1,1))
    

    【讨论】:

      【解决方案6】:

      dev.off() 是最好的函数,但它也会清除所有绘图。如果您想在窗口中保留绘图,请在开始时保存默认参数设置:

      def.par = par()

      然后,当您使用 par 函数时,您仍然拥有默认 par 设置的备份。稍后,在生成绘图后,完成:

      par(def.par) #回到默认的par设置

      这样,您可以保留生成的图并重置标准设置。

      【讨论】:

      • 请注意,某些图形参数是只读的,因此无法重置。因此,您对par 的初始一揽子电话 最好使用par(no.readonly = TRUE)
      猜你喜欢
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多