如何仅基于min和max创建箱形图

时间:2014-02-04 18:48:25

标签: r plot ggplot2

在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)

我们会得到一个非常类似的情节: enter image description here

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您可以使用geom_crossbar

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

enter image description here

答案 1 :(得分:2)

如果您精确调整了所有geom_boxplot

,则可以使用aes
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")

enter image description here