ggplot中曲线函数下方和上方的阴影区域

时间:2020-05-21 04:06:11

标签: ggplot2

我有一个函数,该函数的作用域是(-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)

我想用“红色”颜色将该函数的曲线下方的区域着色,用“绿色”阴影将该函数的上方阴影。谁能知道怎么做?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先使用函数创建x和y的数据框可能是最简单的方法,而不是通过ggplot2传递函数。

x <- -50:50
y <- fun.1(x)
df <- data.frame(x,y)

可以通过2个geom_ribbon对象(上方一个和下方一个)进行绘制,该对象可用于填充区域(geom_areageom_ribbon的特例),并分别指定yminymax。底部指定ymax=yymin=-Inf,顶部指定ymax=Infymin=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)

enter image description here

相关问题