2017-05-09 197 views
1

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

这里是我的exsample:

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 

enter image description here

感谢您对您的帮助提前。

回答

5

尝试将函数放入馈送数字的数据框中。然后,您可以使用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) 

enter image description here