大小散点图点均值与样本量成正比
Sizing scatter plot point mean proportional to sample size
我正在使用 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 比较陌生,但我的猜测是在 aes
函数中使用 size
来调整我的点数。我认为提取 fun.y=mean
中使用的样本大小并创建一个可以输入到 size
中的新 class 可能是个好主意,但我不确定该怎么做。
任何帮助将不胜感激!干杯。
编辑
这是我的数据供参考:
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
和 [=20= 计算的] 数字。我想知道是否应该将 Branch
设为分类变量。
Plot without Proportional Sizing
如果我对你的理解是正确的,你想根据每个 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)
作图以确保点的大小与 [= 成比例19=]。您在这里不需要 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();
示例数据
# Sample data
df <- read.table(text =
"Plant Branch Pod_B Flow_Miss Pod_A Flow_T Trt Dmg
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
11 1 10.0 0 2 3 20.00 Late 1", header = T)
在 @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
我正在使用 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 比较陌生,但我的猜测是在 aes
函数中使用 size
来调整我的点数。我认为提取 fun.y=mean
中使用的样本大小并创建一个可以输入到 size
中的新 class 可能是个好主意,但我不确定该怎么做。
任何帮助将不胜感激!干杯。
编辑
这是我的数据供参考:
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
和 [=20= 计算的] 数字。我想知道是否应该将 Branch
设为分类变量。
Plot without Proportional Sizing
如果我对你的理解是正确的,你想根据每个 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)
作图以确保点的大小与 [= 成比例19=]。您在这里不需要 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();
示例数据
# Sample data
df <- read.table(text =
"Plant Branch Pod_B Flow_Miss Pod_A Flow_T Trt Dmg
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
11 1 10.0 0 2 3 20.00 Late 1", header = T)
在 @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