在启动时将参数重置为默认值


76

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

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

这是将还原par为先前值的标准方法。假设您正在运行一些确实更改了某些参数的函数,并且需要在R中启动时将其重置为默认值。这样做的便捷方法是什么?

换句话说:如何达到默认值par()


5
我的印象是,每次启动新的图形设备时,它都会获得默认值。
詹姆斯,

3
@James他们这样做,但是我想@Joris Q的主旨是,如果没有保存默认值,有没有办法重置当前设备的参数。换句话说,我们如何确定设备的默认参数,而不是当前参数。
加文·辛普森,

7
@Gavin辛普森啊确定,但dev.new()dev.off()可以然后用于
詹姆斯

1
@詹姆斯确实; 我在R标签聊天室中向@Joris提到了这一点,但我们希望使用一个不太hacky的解决方案:-)
Gavin Simpson

Answers:


89

每次打开新设备时,par()都会重置,因此另一个选择就是dev.off()继续并继续。


5
在所有提供的答复中,这是唯一实际回答所提问题的答复。
绅士

5
如果我们要在pdf中包含多个图,@DarkHalo将不是一个好选择dev.off()?因为这会关闭pdf设备,因此无法在一个pdf中包含多个图
joel.wilson

51

这很骇人,但是:

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

3
这可能是更安全,避免试图将已被调整,如麦,三月,脚,PLT和PTY改变复位的项目(如在标准杆的帮助页面警告。)
IRTFM

2
在R-help上讨论了类似的想法:tolstoy.newcastle.edu.au/R/e2/help/07/09/26665.html
Aaron在

没有找到其他任何东西,所以必须这样做。
Joris Meys 2011年

1
我收到以下错误消息“警告消息:(功能():仅允许使用一个RStudio图形设备)”
HLM

3
@hlm那么艰难;只能有一个这样的设备,并且由于R不存储默认值,因此现在可以轻松地获取它们。向RStudio人员询问有关此问题。另外,不要更改par()而不保存默认值。或安排在启动时通过来获取默认值.Rprofile
加文·辛普森

15

来自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

13
我知道一个,但是如果您之前更改过默认值,它不会恢复。par()显示当前设置,而不是默认设置。
乔里斯·梅斯(Juris Meys)2013年

4
在这种情况下,该解决方案可能无法正常工作,但让我们将其留在这里,作为一种无效的方法。
Anusha 2015年

4

防止功能更改用户的替代解决方案par。您可以在功能上尽早设置默认参数,以便在功能执行期间不会更改图形参数和布局。有关?on.exit详细信息,请参见。

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

1

使用下面的脚本返回到正常的1个图:

par(mfrow = c(1,1))

1

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

def.par = par()

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

par(def.par)#返回默认par设置

这样,您就可以保留生成的图并重置参数设置。


2
请注意,某些图形参数是只读的,因此无法重置。因此,您最好以的方式一口气致电parpar(no.readonly = TRUE)
BroVic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.