(注意 - 这与在 ggplot 中使用多个尺寸比例相同,但我问的是不同的问题)
我正在尝试构建一个显示从一个类到另一个类的转换的图。我想要代表每个班级的圆圈,以及从一个班级到另一个班级的箭头代表过渡。
我正在使用 geom_segment 和 arrow() 来绘制箭头。有没有办法:
- 使箭头在到达圆圈之前停止
- 调整位置,以便如果两个方向都有箭头,它们会被“躲避”而不是重叠。
我无法让 position="dodge" 在这里做任何有用的事情。
举个例子:
library(ggplot2)
points <- data.frame( x=runif(10), y=runif(10),class=1:10, size=runif(10,min=1000,max=100000) )
trans <- data.frame( from=rep(1:10,times=10), to=rep(1:10,each=10), amount=runif(100)^3 )
trans <- merge( trans, points, by.x="from", by.y="class" )
trans <- merge( trans, points, by.x="to", by.y="class", suffixes=c(".to",".from") )
ggplot( points, aes( x=x, y=y ) ) + geom_point(aes(size=size),color="red",shape=1) +
scale_size_continuous(range=c(4,20)) +
geom_segment( data=trans[trans$amount>0.6,], aes( x=x.from, y=y.from, xend=x.to, yend=y.to ),lineend="round",arrow=arrow(),alpha=0.5, size=0.3)