使用R中的ggplot2的数据点数量着色(或alpha)箱图

时间:2013-07-16 17:40:48

标签: r colors ggplot2 boxplot

我有柱状数据集,我正在绘制一系列箱形图,最类似于此示例中的设置: Boxplot of table using ggplot2

require(reshape2)
ggplot(data = melt(dd), aes(x=variable, y=value)) + geom_boxplot(aes(fill=variable))

但是,在我的情况下,每个箱图表示不同数量的数据点。例如,A列可能有8000个数据点,B列可能有6000个,C列可能有2500个,D列可能有800个。

为了帮助沟通,我想我可以对框的填充颜色进行alpha化以反映数据点的数量。盒子越暗,用于计算箱线图所代表的统计数据的数据点就越多。

在geom_histogram的ggplot2帮助文件中,他们使用aes(fill = .. count ..)来遮挡与bin中的计数数相对应的bin。

m <- ggplot(movies, aes(x=rating))    
m + geom_histogram(aes(fill=..count..))

(希望在这里包含示例直方图的图片,但不能因为我没有足够的声望点...抱歉)

我尝试在我的ggplot geom_boxplot中使用它,但它似乎不知道..count ..部分。 这是我生成boxplot的行:

ggplot(meltedData, aes(x=variable, y=value)) + geom_boxplot(aes(fill=variable), outlier.size = 1) + ylim(-4,3)

任何人都有任何指示?我知道我可以将“alpha”属性添加到geom_boxplot,但是如何根据boxplot中的数据点数单独将它应用于每个boxplot?

提前致谢。

3 个答案:

答案 0 :(得分:7)

stat_boxplot不计算计数。只需在ggplot2之外执行:

library(plyr)
DF <- ddply(mtcars, .(cyl), transform, myalpha = length(cyl))

library(ggplot2)
ggplot(DF, aes(factor(cyl), mpg)) + 
  geom_boxplot(aes(alpha = myalpha), fill = "blue") 

enter image description here

答案 1 :(得分:1)

data.table选项:

dd <- data.table(dd)
dd[,Count:=.N,by=variable]

答案 2 :(得分:0)

我使用dplyr软件包的Roland解决方案版本:

library(dplyr)
library(ggplot2)

df <- mtcars %>%
  group_by(cyl) %>%
  mutate(my_alpha = length(cyl))

ggplot(df, aes(factor(cyl), mpg)) +
  geom_boxplot(aes(alpha = my_alpha), fill = 'blue')