gpt4 book ai didi

r - 将 ggplot2 stat_function 添加到现有图形

转载 作者:行者123 更新时间:2023-12-04 18:56:57 25 4
gpt4 key购买 nike

我有一个图表,我想在图表上叠加一个函数形式。看起来很简单,但我错过了一些东西。这是我使用的示例数据和插图 stat_function尝试添加 f1到图表:

library(ggplot2)
sample_data <- data.frame(rate = c(0.514492753623188, 0.553072625698324, 0.656527249683143, 0.675694939415538,
0.68681076312307, 0.715657311669128, 0.792349726775956),
level = c(0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85) )

f1 <- function(x) pbeta(x, shape1=1.01, shape2=.9 ) * 100

g <- ggplot() +
geom_line(aes(y = rate*100 , x = level),
data = sample_data, stat="identity") +
stat_function(fun = f1)
g



如您所见, f1线不在那里。

因此,作为替代方案,我可以将点添加到初始 data.frame,然后使用 geom_line 绘制它们。如以下示例所示:
## add f1 to data.frame
sample_data$f1 <- f1(sample_data$level )

g <- ggplot() +
geom_line(aes(y = rate*100 , x = level),
data = sample_data, stat="identity") +
geom_line(aes(y = f1 , x = level),
data = sample_data, stat="identity", color='red')
g



这样就可以了,并为我提供了我需要的东西,但我不明白为什么 stat_function没有用。有小费吗?

最佳答案

您需要 data = sample_data, aes(y = rate*100 , x = level)在您的第一个 ggplot这么叫 stat_function知道正在使用的数据

library(ggplot2)

sample_data <- data.frame(rate = c(0.514492753623188, 0.553072625698324, 0.656527249683143, 0.675694939415538,
0.68681076312307, 0.715657311669128, 0.792349726775956),
level = c(0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85) )

f1 <- function(x) pbeta(x, shape1=1.01, shape2=.9 ) * 100

g <- ggplot(data = sample_data, aes(y = rate*100 , x = level)) +
geom_line() +
stat_function(fun = f1, color = "red")
g



创建于 2018-05-20 由 reprex package (v0.2.0)。

关于r - 将 ggplot2 stat_function 添加到现有图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50437477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com