I am interesting in creating a map that looks like this (found at https://www.axios.com/2017/12/15/the-flow-of-goods-between-states-1513304375):

Specifically, I want to depict flows between regions on a map with curved lines, and indicate bigger flows with wider lines, and also use arrows to show the direction of the flow. If possible, I would also like the line from A to B to not be on top of the line from B to A in order for the viewer to distinguish between the two. And preferably use ggplot2, though I am open to other solutions.
I will note that there are related questions (such as How can I add directional arrows to lines drawn on a map in R?, How to create a map chart with direction arrows in R?, plotting email flow in map using R, and https://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/), but I was wondering if there is a solution that allows me to incorporate all the elements at once. (And I am not sure if prior solutions tackle the problem of not having A to B and B to A overlap.)
Yes, it is possible with
ggplot2(tidyverse) andsf. Thecurvatureofgeom_curve()need to be different of 0, ex. 0.5, in order to create an ellipse without overlapping arrows, A--> B and B-->A.Here is a quick attempt. You might want creating bins for alpha and the linewidht.