3

这是我的示例代码。我想制作同一个图的几个变体,因此强制执行相同的 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 限制的图。

4

1 回答 1

3

所以plot(p)这里实际上产生了一个ggplot对象列表,从查看brms:::plot.brmsMarginalEffects. 此外,帮助文件 ( ?marginal_effects) 内容如下:

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

列表项是每个感兴趣的效果。

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

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

或者直接使用变量名:

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

两者都给出:

在此处输入图像描述

要对轴进行更多控制,请使用ggplot2::scale_y_continuous.

于 2017-05-29T07:44:11.567 回答