ggplot2:为boxplot中的框提供最小尺寸(所以不是

时间:2013-11-13 00:06:33

标签: r ggplot2

我有以下boxplot:

df1 <- data.frame(f = c("a","b","c","c","c"), x=c(1,1,1,5,9))
qplot(factor(f),as.numeric(x),data=df1) + geom_boxplot()

对于箱形图的两个因素,“框”只是一条线。是否可以增加这两个因素的盒子大小,以便显示一个微观的白盒子?或者我可以手动提供默认的最小宽度?

1 个答案:

答案 0 :(得分:1)

你可能不应该这样做,因为它至少有点不诚实。但是,如果你真的对它有所了解,那么这里可能会有一些黑客攻击:

ggplot(df1, aes(x = factor(f), y = as.numeric(x))) +
  geom_boxplot(size = 2) + 
  geom_boxplot(size = 1, color = "white")

如果你想保留诚实的箱形图的外观,你可以做类似

的事情
library('plyr')
flat <- subset(ddply(df1, .(f), summarise, flat = length(unique(x))), flat == 1)$f
flat <- df1[df1$f %in% flat,]

ggplot(df1, aes(x = factor(f), y = as.numeric(x))) +
  geom_boxplot()
  geom_boxplot(data = flat, size = 2) + 
  geom_boxplot(data = flat, size = 1, color = "white")