在本地设置R图形参数但不是全局的?

时间:2014-06-20 14:54:59

标签: r plot

有没有办法在本地环境中设置或屏蔽par()?我对R环境并不十分熟悉,所以我不清楚为什么这是不可能的,尽管我明白为什么它不是默认行为。我看到了this question,但我不知道它是否适用于此。如果没有某种方法来调整搜索路径以使其发挥作用,我也会感到惊讶。

然后,再也没有办法调整决定是否省略某些轴标签的算法......难道只需要一个开关来关闭该功能并让用户支付价钱?这似乎是语言中其他一切的设计理念(我开始欣赏它)。

2 个答案:

答案 0 :(得分:6)

如上所述,您可以在par函数中传递plot个参数,但这对于提供的绘图函数并不起作用(并非所有参数都以这种方式工作 - 请参阅{ {1}})。限制参数更改到函数体的另一个有用的习惯是

?par

如果你以非标准的方式打破一个函数(例如在函数运行时调用Ctrl-C,或调试/ Q,而不是通常的话),我不能100%确定这个成语是安全的function(...) { old.pars <- par(...,no.readonly=TRUE) on.exit(par(old.pars))) ... }

我在贡献包中遇到了一些修改全局return()设置而不重置它们的函数,我认为这种做法非常糟糕......

答案 1 :(得分:2)

除了其他答案和注释之外,请注意图形参数是图形设备的本地参数,因此您可以打开新的图形设备,设置所需的参数,然后在关闭设备时(或切换回另一个)以前的参数将生效。一个简单的例子:

dev.new()
par(col='blue')
hist(rnorm(100))
abline(v=0, lwd=5)
dev.new()
par(col='red')
hist(rnorm(1000))
par(lwd=5)
abline(v=0)
dev.off()
plot(runif(25), rnorm(25))
abline(h=0, lwd=3)

有关在图形设备之间切换的详细信息,请参阅dev.listdev.set的帮助。