与ggplot汇总/总和

mb1*_*b14 10 r ggplot2

有没有办法将数据与ggplot2?相加?

我想做一个气泡图,其大小取决于z的总和.

目前我正在做类似的事情

dd <- ddply(d, .(x,y), transform, z=sum(z))
qplot(x,y, data=dd, size=z)
Run Code Online (Sandbox Code Playgroud)

但我觉得我两次写同样的东西,我希望能写出一些东西

qplot(x,y, data=dd, size=sum(z))
Run Code Online (Sandbox Code Playgroud)

我一看stat_sumstat_summmary,但我不知道他们是合适的要么.

有可能ggplot2吗?如果没有,那么写出这两行的最佳方法是什么.

San*_*att 7

它可以stat_sum在ggplot2中使用.默认情况下,点大小表示比例.要获得点大小来表示计数,请将其size = ..n..用作美学.第三个变量的计数(和比例)可以通过第三个变量(weight = cost)加权作为美学来获得.一些例子,但首先是一些数据.

library(ggplot2)
set.seed = 321
# Generate somme data
df <- expand.grid(x = seq(1:5), y = seq(1:5), KEEP.OUT.ATTRS = FALSE)
df$Count = sample(1:25, 25, replace = F)
library(plyr)
new <- dlply(df, .(Count), function(data) matrix(rep(matrix(c(data$x, data$y), ncol = 2), data$Count), byrow = TRUE, ncol = 2))
df2 <- data.frame(do.call(rbind, new))
df2$cost <- 1:325
Run Code Online (Sandbox Code Playgroud)

数据包含根据两个因素分类的单位:X1和X2; 第三个变量是每个单位的成本.

图1:绘制每个X1-X2组合中元素的比例.group=1告诉ggplot计算数据框中单位总数的比例.

ggplot(df2, aes(factor(X1), factor(X2))) + 
  stat_sum(aes(group = 1))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

图2:绘制每个X1-X2组合的元素数量.

ggplot(df2, aes(factor(X1), factor(X2))) + 
  stat_sum(aes(size = ..n..))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

图3:绘制每个X1 - X2组合的元素成本,即weight第三个变量.

ggplot(df2, aes(x=factor(X1), y=factor(X2))) + 
     stat_sum(aes(group = 1, weight = cost, size = ..n..)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

图4:绘制每个X1-X2组合中数据框中所有元素总成本的比例

ggplot(df2, aes(x=factor(X1), y=factor(X2))) + 
     stat_sum(aes(group = 1, weight = cost)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

图5:绘制比例,但不是数据框中所有元素的总成本中的比例,而是该比例超出了每个X1类别中元素的成本.也就是说,在每个X1类别中,X2单位的主要成本在哪里出现?

ggplot(df2, aes(x=factor(X1), y=factor(X2))) + 
     stat_sum(aes(group = X1, weight = cost)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述