coord_flip 后 mcmc 区域的反向 x 轴因子水平

Reverse x-axis factor levels of mcmc areas after coord_flip

我有一个来自三个不同变量的贝叶斯后验分布的绘图数据框,我想将它们绘制为 mcmc_areas

当我这样做时,变量名称在 y 轴上,绘图值在 y 轴上。当我使用 coord_flip 将变量名切换到 x 轴时,它们是相反的。

我看到的其他解决方案涉及修改原始数据集或 ggplot 中的 aes 以包含我的数据没有的因子水平。

如何反转 x 轴上变量名称的顺序,以便它们从左到右读取 var1、var2、var3?

library(bayesplot)
library(ggplot2)

var1 <- c(-0.06002548, -0.02066638, -0.04869878, -0.03085879, -0.04363278, -0.04427182)
var2 <- c(-0.011345631, -0.033393275, -0.037143247, -0.012890959, -0.031249614, -0.001547747)
var3 <- c(-0.05907443, -0.06544918, -0.05831428, -0.04964141, -0.05206038, -0.05726436)

df <- data.frame(var1, var2, var3)

plot <- mcmc_areas(test, pars = c("var1","var2","var3"),
                   point_est = "mean",
                   prob = .95)
ggtest <- plot + coord_flip()

一种选择是反转您将变量传递给 mcmc_areas 的顺序,以便在翻转后获得所需的顺序:

library(bayesplot)
library(ggplot2)

mcmc_areas(df, pars = rev(c("var1","var2","var3")),
           point_est = "mean",
           prob = .95) +
  coord_flip()

第二个选项是通过 scale_y_discretelimits 参数设置所需的顺序。笔记。这样做会稍微改变情节的外观。为了解决这个问题,我将 expand 参数设置为等于我从 plot$scales$scales[[1]]$expand.

中提取的 mcmc_areas 设置的值
mcmc_areas(df, pars = c("var1","var2","var3"),
           point_est = "mean",
           prob = .95) +
  coord_flip() +
  scale_y_discrete(limits = c("var1","var2","var3"), expand = c(0.1, 0, 0.1, 0.666666666666667))
#> Scale for 'y' is already present. Adding another scale for 'y', which will
#> replace the existing scale.