/ / ggplot2: Comment ombrer une zone au-dessus d’une courbe de fonction et au-dessous d’une ligne? - r, parcelle, ggplot2

ggplot2: Comment ombrer une zone au-dessus d'une courbe de fonction et sous une ligne? - r, parcelle, ggplot2

J'ai donc une base de données comme celle-ci:

a_data <-
data.frame(
f = f,
alpha = alpha,
asymptote = alpha_1_est)

et une fonction comme celle-ci:

a_formula <- function(x) {
0.7208959 - 0.8049132 * exp(-21.0274 * x)}

Je les utilise avec ggplot2:

ggplot(a_data, aes(x = f, y = alpha)) +

geom_point() +

#function curve
stat_function(fun = a_formula,
color = "red") +

#asymptote of alpha
geom_hline(
yintercept = asymptote,
linetype = "longdash",
color = "blue")

qui donne une parcelle comme celle-ci: parcelle de base

ce que je veux et ne peux pas "trouver un moyen de faire est d’ombrer la zone entre y axe, la courbe de fonction (rouge) et la ligne asymptote (en pointillé), comme ceci: parcelle ombragée

J’ai essayé d’insérer un ruban ou un polygone à l’intérieur, mais cela ne fonctionne pas correctement - c’est peut-être parce que je veux ombrer au dessus la courbe, pas ci-dessous (ci-dessous fonctionne très bien).

Voici à quoi ressemble le cadre de données:

> head(a_data)
f       alpha asymptote
1 0.01 0.007246302 0.7208959
2 0.03 0.374720198 0.7208959
3 0.05 0.484362949 0.7208959
4 0.07 0.540090209 0.7208959
5 0.09 0.625383303 0.7208959
6 0.11 0.590898201 0.7208959

P.S. Je suis assez nouveau pour faire la queue, donc si j’ai brisé une convention ou si j’ai égaré la question, n’hésitez pas à la préciser.

Réponses:

4 pour la réponse № 1

L'exemple ci-dessous montre comment geom_ribbon peut être utilisé pour colorer la zone située entre la ligne horizontale et la courbe.

df1 <- structure(list(x = c(0.01, 0.03, 0.05, 0.07, 0.09, 0.11), y = c(0.007246302,
0.374720198, 0.484362949, 0.540090209, 0.625383303, 0.590898201
), asymptote = c(0.7208959, 0.7208959, 0.7208959, 0.7208959,
0.7208959, 0.7208959)), .Names = c("x", "y", "asymptote"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))

a_formula <- function(x) { 0.7208959 - 0.8049132*exp(-21.0274*x) }

xs <- seq(min(df1$x),max(df1$x),length.out=100)
ysmax <- rep(0.7208959, length(xs))
ysmin <- a_formula(xs)
df2 <- data.frame(xs, ysmin, ysmax)

library(ggplot2)
ggplot(data=df1) + geom_point(aes(x=x, y=y)) +
geom_line(aes(x=x, y=asymptote), lty=2, col="blue", lwd=1) +
stat_function(fun = a_formula, color="red", lwd=1) +
geom_ribbon(aes(x=xs, ymin=ysmin, ymax=ysmax), data=df2, fill="#BB000033")

entrer la description de l'image ici