在ggplot中用函数定义的两条线之间的阴影区域

Shade area between two lines defined with function in ggplot

我试图找到如何对 ggplot 中由函数定义的两条线之间的区域进行阴影处理的可能性。我找到了一些使用 geom_area 或 geom_ribbon 的解决方案,但在这两种情况下,您都需要一个在其中定义 ymin 和 ymax 的数据库。还有其他可能吗? ymin 和 ymax 的定义方式也与线条具有相同的功能吗?

这是我的示例:

myplot <- ggplot(data.frame(x=c(0, 100)), aes(x=x)) +
stat_function(fun= function(x)20*sqrt(x), geom="line", colour= "black", size= 1) +
stat_function(fun= function(x)50*sqrt(x), geom="line", colour= "black", size= 1)
myplot

提前感谢您的帮助。

尝试将函数放入提供图形的数据框中。然后就可以用geom_ribbon来填充两个函数之间的区域了。

mydata = data.frame(x=c(0:100),
                    func1 = sapply(mydata$x, FUN = function(x){20*sqrt(x)}),
                    func2 = sapply(mydata$x, FUN = function(x){50*sqrt(x)}))

ggplot(mydata, aes(x=x, y = func2)) +
  geom_line(aes(y = func1)) + 
  geom_line(aes(y = func2)) + 
  geom_ribbon(aes(ymin = func2, ymax = func1), fill = "blue", alpha = .5)