如何调用par(),设置在R中嵌入一个对象?

时间:2016-03-26 18:26:25

标签: r

在考虑你的答案之前,我想纠正我的问题: 关于你的问题:“我很好奇为什么,你之前在绘制副图之后设置参数? “实际上,我只是忘了提一些东西。正确的顺序是:

再次使用数据:

    dose <- c(20, 30, 40, 45, 60) 
    drugA <- c(16, 20, 27, 40, 60) 
    drugB <- c(15, 18, 25, 31, 40)

1st:run:plot(dose, drugA, type="b", pch=19, lty=2, col="red"(这只是一个自我检查机制。我的意思是我首先证明自己,我正在使用默认的R设置生成图表)(Plot_1) enter image description here

2nd_run:opar.1<-par(pin=c(5, 3), lwd=2, cex=1.5)

3rd_run:plot(dose, drugA, type="b", pch=19, lty=2, col="red")(与opar.1设置相同的情节,所以我比较第一个情节和第二个情节)(Plot_2) enter image description here

4th_run:par(opar.1)(意图重置opar.1设置。)

5th_run:plot(dose, drugA, type="b", pch=19, lty=2, col="red")(我看到我的第三个情节与我的第一个情节相同。因此,这证明par(opar.1)命令重置opar.1设置并将其转为默认设置。)(Plot_3与Plot_1相同) enter image description here

但是,当我运行opar.1然后运行6th_run plot(dose, drugA, type="b", pch=19, lty=2, col="red"时,我没有得到与plot_2相同的情节。 总而言之,我想知道我是否因为“opar.1<-par(pin=c(5, 3), lwd=2, cex=1.5)”命令存储“par(pin=c(5, 3), lwd=2, cex=1.5)”设置而错误,即使我在“{{1}之后使用”par(opar.1)“命令通过运行“opar.1”命令并重置opar.1<-par(pin=c(5, 3), lwd=2, cex=1.5)设置我可以加载“opar.1”设置吗?

1 个答案:

答案 0 :(得分:1)

有两种机制可以想到,虽然你是在正确的方向开始,但你错过了最后一点。我很好奇为什么你在绘制副之前设置heightForRowAtIndexPath:安培?为了有用,您通常需要在调用par之前设置它们。

使用您的数据:

plot
  1. 第一种机制不需要额外的包:

    dose <- c(20, 30, 40, 45, 60)
    drugA <- c(16, 20, 27, 40, 60)
    drugB <- c(15, 18, 25, 31, 40)
    

    以这种方式执行此操作的一个风险是,在对opar.1 <- par(pin = c(5, 3), lwd = 2, cex = 1.5) plot(dose, drugA, type = "b", pch = 19, lty = 2, col = "red") par(opar.1) 进行恢复调用之前,如果任何代码失败(导致par或其他早期退出函数),则第二个{{可能没有调用1}}命令。 在函数(不是命令行)中,可以使用以下内容来避免此问题,特别是在stop中提供(如@rawr所述):

    par

    (这只是在函数中执行时你想要的...在命令行中,你需要直接调用?par的第一个实例。)

  2. 使用opar.1 <- par(pin = c(5, 3), lwd = 2, cex = 1.5) on.exit(par(opar.1)) plot(dose, drugA, type = "b", pch = 19, lty = 2, col = "red") 包:

    par

    withr之前,之内和之后的library(withr) message('## before with_par') # ## before with_par str(par(c('pin', 'lwd', 'cex'))) # List of 3 # $ pin: num [1:2] 5.76 5.16 # $ lwd: num 1 # $ cex: num 1 with_par(list(pin = c(5, 3), lwd = 2, cex = 1.5), { plot(dose, drugA, type="b", pch=19, lty=2, col="red") message('## inside with_par') str(par(c('pin', 'lwd', 'cex'))) }) # ## inside with_par # List of 3 # $ pin: num [1:2] 5 3 # $ lwd: num 2 # $ cex: num 1.5 message('## after with_par') # ## after with_par str(par(c('pin', 'lwd', 'cex'))) # List of 3 # $ pin: num [1:2] 5.76 5.16 # $ lwd: num 1 # $ cex: num 1 message调用是为了证明参数仅在代码块内部更改,因此这在函数中相对安全并在命令行上。

  3. 这两种方法都提供相同的str - 调整后的图。