我有柱状数据集,我正在绘制一系列箱形图,最类似于此示例中的设置: 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?
提前致谢。
答案 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")
答案 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')