ggplot2版本3.2.0和bayesAB绘图冲突

时间:2019-06-18 12:25:12

标签: r ggplot2

这是使用bayesAB包在两组之间进行的简单贝叶斯比较:

library(bayesAB)

A_binom <- rbinom(100, 1, .5)
B_binom <- rbinom(100, 1, .6)

AB1 <- bayesTest(A_binom, B_binom,
                 priors = c('alpha' = 1, 'beta' = 1),
                 distribution = 'bernoulli')
plot(AB1)

并使用ggplot2(3.1.1)的先前版本,该过程用于返回期望的图,如此处所述和所示:https://frankportman.github.io/bayesAB/reference/bayesTest.html

但是,更新为ggplot2(3.2.0)后,运行plot(AB1)后出现以下错误:

  

错误:ymin或ymax必须是美观的。

在使用p = plot(AB1)进行了更多检查之后,我分别看到p$posteriorsp$samples正常工作,问题与p$priors有关。来自同一软件包(plotBeta(6,4))的plotGamma(1,1)bayesAB等命令也存在类似的问题。

是否可以使用ggplot2 3.2.0解决此问题?

1 个答案:

答案 0 :(得分:1)

此错误是由于geom_ribbon的代码更改(请参见CRAN news file for 3.2.0的“重大更改”部分)。

ggplot2小组已经通过bayesAB's GH issues page通知了软件包作者,因此希望可以尽快更新软件包以解决此问题。

在此之前,一种快速的解决方法是,通过在R会话开始时运行plotDist_,并在未导出的trace(bayesAB:::plotDist_, edit=TRUE)函数中修改潜在的有问题的代码,并修改以下代码行。

原文:

function (support, hseq, dist, params) 
{
    discretes <- c("Poisson")
    ribbon_or_bar <- ggplot2::geom_ribbon(ymin = 0, 
        ymax = hseq, # <- modify this line
        size = 2, color = I("lightblue"), fill = "lightgreen", 
        alpha = 0.25)
    # ... omitted
}

已修改:

function (support, hseq, dist, params) 
{
    discretes <- c("Poisson")
    ribbon_or_bar <- ggplot2::geom_ribbon(ymin = 0, 
        mapping = ggplot2::aes(ymax = hseq), # new version, with ymax placed inside aes()
        size = 2, color = I("lightblue"), fill = "lightgreen", 
        alpha = 0.25)
    # ... omitted
}

plot(AB1)应该在更改后像以前一样工作。以下是与p$priors对应的图:

plot

plotBeta(6,4)

plot2

plotGamma(1,1)

plot3