4

我有柱状数据集,我正在绘制一系列箱形图,与本示例中的设置最相似: 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.. 部分。这是我生成箱线图的线:

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

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

提前致谢。

4

3 回答 3

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

在此处输入图像描述

于 2013-07-16T18:08:02.993 回答
2

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')
于 2019-02-17T03:45:04.473 回答
1

data.table选项:

dd <- data.table(dd)
dd[,Count:=.N,by=variable]
于 2013-07-16T18:10:46.087 回答