我有一个函数,该函数的作用域是(-100,100)
fun.1 <- function(x) (-100*x)/(x+100)
这是我绘制函数的代码。
ggplot(data.frame(x = c(-50,50)), mapping = aes(x=x)) + stat_function(fun = fun.1, color = "black", size = 1)
我想用“红色”颜色将该函数的曲线下方的区域着色,用“绿色”阴影将该函数的上方阴影。谁能知道怎么做?
谢谢。
答案 0 :(得分:0)
首先使用函数创建x和y的数据框可能是最简单的方法,而不是通过ggplot2
传递函数。
x <- -50:50
y <- fun.1(x)
df <- data.frame(x,y)
可以通过2个geom_ribbon
对象(上方一个和下方一个)进行绘制,该对象可用于填充区域(geom_area
是geom_ribbon
的特例),并分别指定ymin
和ymax
。底部指定ymax=y
和ymin=-Inf
,顶部指定ymax=Inf
和ymin=y
。最后,由于df$y
随着df$x
的变化,我们应该确保所有引用y
的参数都包含在aes()
中。
ggplot(df, aes(x,y)) + theme_minimal() +
geom_line(size=1) +
geom_ribbon(ymin=-Inf, aes(ymax=y), fill='red', alpha=0.2) +
geom_ribbon(aes(ymin=y), ymax=Inf, fill='green', alpha=0.2)