Ich habe also einen Datenrahmen wie diesen:
a_data <-
data.frame(
f = f,
alpha = alpha,
asymptote = alpha_1_est)
und eine Funktion wie diese:
a_formula <- function(x) {
0.7208959 - 0.8049132 * exp(-21.0274 * x)}
Ich benutze sie mit 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")
was eine Handlung wie folgt ergibt:
ich will und kann keinen Weg finden, den Bereich zwischen den beiden zu beschatten y
Achse, die Funktionskurve (rot) und die Asymptotenlinie (gestrichelt) wie folgt:
Ich habe versucht, ein Band oder ein Polygon dort zu quetschen, aber es funktioniert nicht richtig über die kurve, nicht darunter (unten klappt das ganz gut).
So sieht der Datenrahmen aus:
> 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. Ich bin relativ neu im Bereich Stackoverflowing. Wenn ich also Konventionen gebrochen oder die Frage anderweitig durcheinander gebracht habe, zögere nicht, darauf hinzuweisen.
Antworten:
4 für die Antwort № 1Das Beispiel unten zeigt wie geom_ribbon
kann bequem zum Einfärben des Bereichs zwischen der horizontalen Linie und der Kurve verwendet werden.
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")