首页 文章

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

提问于
浏览
3

我有柱状数据集,我正在绘制一系列箱形图,最类似于此示例中的设置: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 回答

  • 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

    data.table 选项:

    dd <- data.table(dd)
    dd[,Count:=.N,by=variable]
    
  • 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')
    

相关问题