【发布时间】:2020-11-16 19:46:48
【问题描述】:
我想制作一个面积图,显示三个变量(Vr、Hr 和 Ar)在具有 7 个稀释步骤的稀释系列 (x = dil) 中的平均演变。每个稀释度都有 5 个重复,我想将其总结为平均值。 这三个变量代表变量 M (Vr + Hr + Ar = M) 的比例。所以我不想将比例加起来为 100%,而是将每个变量的各个区域堆叠起来,以达到 M 的顶部(添加为一条线)。
如何在面积图中叠加三个变量的均值以显示每个稀释步骤的比例分布?到目前为止我已经尝试过了,但是这些层没有堆叠:
mline <- ggplot(data = data, aes(x = dil), na.action=na.omit) +
stat_summary(aes(y = M, group = 1), fun = mean,
geom ="line") +
stat_summary(aes(y = Hr, group = 1), fun= mean,
geom ="area", position = "stack") +
stat_summary(aes(y = Ar, group = 1), fun= mean,
geom ="area", position = "stack") +
stat_summary(aes(y = Vr, group = 1), fun= mean,
geom ="area", position = "stack")
mline
此示例的数据框如下所示:
dput(data)
structure(list(dil = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L,
5L, 5L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L), .Label = c("1",
"2", "3", "4", "5", "6", "7"), class = "factor"), M = c(0.366666667,
12.03333333, 1, 6.933333333, 4.533333333, 2.166666667, 5.633333333,
1, 1.4, 0, 15.66666667, 21.16666667, 6.033333333, 1, 0.2, 0,
4.533333333, 0.333333333, 0.166666667, 0, 0, 1, 0, 0.366666667,
0, 0.166666667, 0, 0, 0, NA, 1, 3.5, 0, NA, NA), Ar = c(0.100284295,
3.896431897, 0.333333333, 2.241353469, 1.540488607, 0.196969697,
2.118578371, 0.095357674, 0.200607926, 0, 3.605257275, 6.81946709,
0.930970496, 0.393446629, 0.03012711, 0, 0.468426671, 0.031017502,
0.065574438, 0, 0, 0.333333333, 0, 0.142139889, 0, 0.015151515,
0, 0, 0, NA, 0.090909091, 1.240533311, 0, NA, NA), Vr = c(0.010505974,
0.46853597, 0.333333333, 0.977669123, 0.43271556, 0.196969697,
0.749485112, 0, 0.051063836, 0, 3.262519219, 2.859413375, 0.641593028,
0.078689326, 0.009038133, 0, 0.637060272, 0.015508751, 0.013114888,
0, 0, 0.333333333, 0, 0, 0, 0.015151515, 0, 0, 0, NA, 0.090909091,
0.827022207, 0, NA, NA), Hr = c(0.255876398, 7.668365466, 0.333333333,
3.714310741, 2.560129166, 1.772727273, 2.765269851, 0.904642326,
1.148328239, 0, 8.798890173, 11.4877862, 4.460769809, 0.527864045,
0.160834757, 0, 3.427846391, 0.286807081, 0.087977341, 0, 0,
0.333333333, 0, 0.224526778, 0, 0.136363636, 0, 0, 0, NA, 0.818181818,
1.432444482, 0, NA, NA)), row.names = c(NA, -35L), class = "data.frame")
可能很简单,但我不明白。非常感谢!
【问题讨论】: