我正在使用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按比例调整大小的方法,其中平均值按Trt
和Branch
计算。我想知道我是否应该将Branch
作为分类变量。
答案 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();
说明:我们按Trt
分组,然后计算每组的样本数ssize
,并使用参数aes(...., size = ssize)
进行绘图,以确保点的大小与{{1}一致}。您不需要sscale
美学。
要根据每group
Flow_T
的平均值来缩放点数,我们可以这样做:
Trt
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")