【问题标题】:geom_boxplot: replace the lines between the IQR and the whiskers by a second rectanglegeom_boxplot:用第二个矩形替换 IQR 和胡须之间的线
【发布时间】:2021-12-30 21:29:58
【问题描述】:

ggplot2::geom_boxplot() 中有没有办法使用第二个矩形替换 IQR 和胡须之间的线? 这是我想要实现的视觉效果示例:

来源:魁北克南部水文气候地图集,https://www.cehq.gouv.qc.ca/atlas-hydroclimatique/Hydraulicite/Qmoy.htm。 (点击一条河流)

我找到了如何使用以下方法覆盖geom_stats() 的分位数位置:

environment(ggplot2::StatBoxplot$compute_group)$f

这段代码的完整解释可以在这里找到:https://coderedirect.com/questions/468264/override-lower-upper-etc-in-boxplot-while-grouping

例如,它可以绘制一个 95% - 50% - 5% 的框,而不是经典的 75% - 50% - 25% 的视觉效果,但与如何在图表上绘制分位数无关。

感谢您对此的想法:)

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    也许你可以使用geom_crossbar。这是一个使用虹膜数据的示例:

    x = boxplot(Sepal.Length ~ Species, data=iris, plot=FALSE)$stats
    x = as.data.frame(t(x))
    x$species = unique(iris$Species)
    #    V1  V2  V3  V4  V5    species
    # 1 4.3 4.8 5.0 5.2 5.8     setosa
    # 2 4.9 5.6 5.9 6.3 7.0 versicolor
    # 3 5.6 6.2 6.5 6.9 7.9  virginica
    
    ggplot(x, aes(species, V3)) +
      geom_crossbar(aes(ymin=V1,ymax=V5, fill=species), alpha=0.5) +
      geom_crossbar(aes(ymin=V2,ymax=V4, fill=species))
    

    或者,没有边界:

    ggplot(x, aes(species, V3)) +
      geom_crossbar(aes(ymin=V1,ymax=V5, fill=species), alpha=0.5, size=0) +
      geom_crossbar(aes(ymin=V2,ymax=V4, fill=species), size=0) +
      geom_crossbar(aes(ymin=V3,ymax=V3, fill=species))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多