Suppose the two end-points are $(x_0, y_0)$ and $(x_1, y_1)$.
Use the function
$$ f(x) = \frac{(x_1-x)^2 y_0 + 2(x_1 - x)(x- x_0)h + (x - x_0)^2 y_1 }{(x_1 - x_0)^2} $$
The $h$ is a free parameter. You can adjust its value between $\tfrac{1}{2}(y_0 + y_1)$ and $y_1$.
If $(x_0, y_0) = (0,0)$ and $(x_1, y_1) = (1,1)$, as in your picture, then this $f$ simplifies greatly. It just becomes
$$ f(x) = (1 - 2h)x^2 + 2hx$$
Again, in this special case, you can adjust $h$ to have any value between 0.5 and 1. When $h=0.5$, you get a straight line. When $h=1$, you get a curve whose tangent is horizontal at the right-hand end.
some options in R would be
t=seq(0,10,0.01)
y=sin(t)+rnorm(length(t))
plot(t,y,cex=0.1)
# puts a loess smoother through the points
lines(loess.smooth(t,y),col=2)
library(mgcv)
# puts a spline through the points - read Simon Woods work to learn more about this
g<-gam(y~s(t),data=data.frame(t=t,y=y))
lines(t,g$fitted.values,col=3)
and for your recently added data
t=1:400
y=rep(NA,length(t))
y[10]<-30
y[111]<-100
y[171]<-128
y[181]<-86
y[201]<-42
y[211]<-44
y[281]<-39
y[321]<-59
y[341]<-20
y[351]<-4
library(mgcv)
g<-gam(y~s(t),data=data.frame(t=t,y=y))
lm<-predict.gam(g,data.frame(t=t,y=y))
plot(t,y,cex=0.5,pch=16,ylim=c(min(lm),max(lm)))
lines(t,lm,col='red')
Best Answer
How about $(1-(1-x)^p)^{1/p}$? These are symmetric across the line $y = 1 - x$.
For $p=1, 2, 3, 4, 5$ (moving up and to the left as $p$ increases):