【问题标题】:How to create box plot based on min and max alone如何仅基于最小值和最大值创建箱线图
【发布时间】:2014-02-04 18:48:24
【问题描述】:

在 ggplot 中,我们可以通过指定数据框中具有条形高度的列来创建条形图

library("ggplot2")
library(plyr)
mm <- ddply(mtcars, "cyl", summarise, mmpg = mean(mpg))
ggplot(mm, aes(x = factor(cyl), y = mmpg)) + geom_bar(stat = "identity")

但是,我无法弄清楚如何制作一个类似的图,同时指定条形的顶部和底部。 例如使用下面的数据

df <- read.table(text = " id  min  max 
    Sp1     8.5          13.2     
 Sp2     11.7          14.5     
 Sp3     14.7          17.7     ", header=TRUE)

我们会得到一个非常相似的情节:

有什么建议吗?

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    你可以使用geom_crossbar:

    ggplot(df) +
      geom_crossbar(aes(ymin = min, ymax = max, x = id, y = min),
                    fill = "blue", fatten = 0)
    

    【讨论】:

    • 我会将fatten=0 添加到geom_crossbar 调用中,以有效消除使底部边框变粗的“中间”线。
    【解决方案2】:

    如果你精确了所有的aes,你可以使用geom_boxplot

    df$med = 0.5*(df$min+df$max)
    ggplot(df, 
           aes(x=id, ymin=min, lower=min,fill=id ,
               middle=`med`, upper=max, ymax=max)) +
      geom_boxplot(stat="identity")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2020-01-30
      相关资源
      最近更新 更多