如何在brms :: marginal_effects()生成的图中指定y-limits?

时间:2017-05-29 04:07:42

标签: r plot axes stan

这是我的示例代码。我想生成相同图表的几个变体,因此强制执行相同的y限制对于视觉比较非常重要。

library(brms)

# data
sgf <- c(rep("A",10),rep("B",10))
Vs  <- c(221, 284, 211, 232, 254, 
         260, 239, 219, 226, 232, 
         388, 399, 421, 419, 332, 
         387, 399, 398, 438, 411)
vspr.df <- data.frame(sgf, Vs)

# perform fit
fit <- brm(formula = Vs ~ sgf,
  data = vspr.df,
  family = lognormal(),
  prior = NULL,
  chains=3,
  iter=300,
  warmup=100)

p <- marginal_effects(fit)
plot(p)
plot(p, ylim=c(0,350))   # no effect
plot(p, ylim=c(0,3500))  # no effect

我的首选结果是最后3行中的每一行都会产生具有不同Y限制的图。

1 个答案:

答案 0 :(得分:2)

所以plot(p)这里实际上会产生ggplot个对象的列表,从查看brms:::plot.brmsMarginalEffects的来源可以看出。此外,帮助文件(?marginal_effects)显示为:

  

相应的plot方法返回一个ggplot对象的命名列表,可以使用ggplot2包进一步自定义。

列表项目符合相关效果。

无论如何,我们可以选择此列表的第一个元素,然后使用ylim中的ggplot来更改限制:

plot(p)[[1]] + ggplot2::ylim(0, 1000)

或直接使用变量名:

plot(p)$sgf + ggplot2::ylim(0, 1000)

两者都给:

enter image description here

要更好地控制轴,请使用ggplot2::scale_y_continuous