【发布时间】:2017-04-19 22:45:31
【问题描述】:
我需要绘制一组根据一组参数变化的函数,例如一组取决于均值和标准差的正态分布曲线。 我找到了here,一个几乎可以完成任务的代码片段:
p9 <- ggplot(data.frame(x = c(0, 1)), aes(x = x)) +
stat_function(fun = dnorm, args = list(0.2, 0.1),
aes(colour = "Group 1")) +
stat_function(fun = dnorm, args = list(0.7, 0.05),
aes(colour = "Group 2")) +
scale_x_continuous(name = "Probability",
breaks = seq(0, 1, 0.2),
limits=c(0, 1)) +
scale_y_continuous(name = "Frequency") +
ggtitle("Normal function curves of probabilities") +
scale_colour_brewer(palette="Accent") +
labs(colour = "Groups")
p9
在这种情况下,代码正好绘制了两条曲线,如下所示:
我的问题是家庭曲线的数量可以是任意的,因此我尝试将代码修改如下:
aa <- list(list(0.2, 0.1), list(0.7, 0.05), list(0.45, 0.2))
p9 <- ggplot(data.frame(x = c(0, 1)), aes(x = x))
for (i in 1:3) {
p9 <- p9 + stat_function(fun = dnorm, args = aa[[i]],
aes(colour = paste("Group", i))
}
p9 <- p9 +
scale_x_continuous(name = "Probability",
breaks = seq(0, 1, 0.2),
limits=c(0, 1)) +
scale_y_continuous(name = "Frequency") +
ggtitle("Normal function curves of probabilities") +
scale_colour_brewer(palette="Accent") +
labs(colour = "Groups")
p9
结果几乎是成功的,因为它描绘了三条曲线,除了它没有通过颜色和图例来区分它们,如下所示:
我猜问题出在函数 aes() 管理其参数的方式上。你知道如何重写我的代码吗?
【问题讨论】: