这是我的示例代码。我想生成相同图表的几个变体,因此强制执行相同的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限制的图。
答案 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)
两者都给:
要更好地控制轴,请使用ggplot2::scale_y_continuous
。