尺寸散点图的平均值与样本大小成正比

时间:2018-03-21 05:00:48

标签: r ggplot2 size point sample

我正在使用ggplot2创建一个散点图,并希望调整我的点大小意味着与用于计算平均值的样本大小成比例。这是我的代码,我使用fun.y按小组Trt计算平均值:

branch1 %>%
ggplot() + aes(x=Branch, y=Flow_T, group=Trt, color=Trt) +
stat_summary(aes(group=Trt), fun.y=mean, geom="point", size=)

我对R比较陌生,但我的猜测是在size函数中使用aes来调整我的点数。我认为提取fun.y=mean中使用的样本大小并创建一个可以输入size的新类可能是一个好主意,但是我不知道该怎么做。

任何帮助将不胜感激!欢呼声。

修改

这是我的数据供参考:

Plant Branch Pod_B Flow_Miss Pod_A Flow_T Trt     Dmg
<int>  <dbl> <int>     <int> <int>  <dbl> <fct> <int>
1     1   1.00     0        16    20  36.0  Early     1
2     1   2.00     0         1    17  18.0  Early     1
3     1   3.00     0         0    17  17.0  Early     1
4     1   4.00     0         3    14  17.0  Early     1
5     1   5.00     5         2     4  11.0  Early     1
6     1   6.00     0         3     7  10.0  Early     1
7     1   7.00     0         4     6  10.0  Early     1
8     1   8.00     0        13     6  19.0  Early     1
9     1   9.00     0         2     7   9.00 Early     1
10     1  10.0      0         2     3   5.00 Early     1

编辑2:

以下是按照Trt(治疗)样本数量n按比例调整大小的方法,其中平均值按TrtBranch计算。我想知道我是否应该将Branch作为分类变量。

Plot without Proportional Sizing

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望根据每个Trt组的点数来缩放点数。

这样的事情怎么样?请注意,我添加了您的示例数据,因为Trt仅包含Early个条目。

df %>%
    group_by(Trt) %>%
    mutate(ssize = n()) %>%
    ggplot(aes(x = Branch, y = Flow_T, colour = Trt, size = ssize)) +
        geom_point();

enter image description here

说明:我们按Trt分组,然后计算每组的样本数ssize,并使用参数aes(...., size = ssize)进行绘图,以确保点的大小与{{1}一致}。您不需要sscale美学。

更新

要根据每group Flow_T的平均值来缩放点数,我们可以这样做:

Trt

enter image description here

样本数据

df %>%
    group_by(Trt) %>%
    mutate(
        ssize = n(),
        mean.Flow_T = mean(Flow_T)) %>%
    ggplot(aes(x = Branch, y = Flow_T, colour = Trt, size = mean.Flow_T)) +
        geom_point();

答案 1 :(得分:0)

使用@Maurits Evers的帮助,我通过Branch因素创建了我想要的图表。以下是我的代码以及我想要的图表:

branch1$Branch <- as.factor(branch1$Branch)
branch1$Flow_T <- as.numeric(branch1$Flow_T)
branch1 %>%
  group_by(Trt, Branch) %>%
  mutate(ssize = n()) %>%
  ggplot(aes(x = Branch, y = Flow_T, colour = Trt)) +
  stat_summary(aes(size=ssize), fun.y=mean, geom="point")

Final Plot