Thanks! I've tried something similar but it is difficult to make it work in every situation. I believe there is no easy solution for this as it requires some computation of the best location to end the arc.
For example
b <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 23.0)
b1 + geom_curve(aes(x=x1 , y = y1 , xend = (x1+x2)/2, yend =y2, colour = "curve"),angle=90,arrow = arrow() , data = df) +
geom_curve(aes(x = (x1+x2)/2, y =y2, xend = x2, yend = y2, colour = "curve"),angle=0,data = df)
or
b <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 21.0)
b1 + geom_curve(aes(x=x1 , y = y1 , xend = (x1+x2)/2, yend =y2, colour = "curve"),angle=90,arrow = arrow() , data = df) +
geom_curve(aes(x = (x1+x2)/2, y =y2, xend = x2, yend = y2, colour = "curve"),angle=0,data = df)