utilizando escalas de tamaño múltiple en un ggplot

Estoy tratando de construir una trama que muestre las transiciones de una clase a otra. Quiero tener círculos que representen cada clase dimensionada de acuerdo con un atributo de clase, y flechas de una clase a otra, dimensionadas de acuerdo con el número de transiciones de una clase a otra.

Como ejemplo:

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") + 
    scale_size_continuous(range=c(4,20)) + 
    geom_segment( data=trans, aes( x=x.from, y=y.from, xend=x.to, yend=y.to, size=amount ),lineend="round",arrow=arrow(),alpha=0.5)

Me gustaría poder escalar las flechas en una escala diferente a los círculos. Idealmente, me gustaría una leyenda con ambas escalas encendidas, pero entiendo que esto puede no ser posible (usando dos gradientes de color de escala en un ggplot)

¿Hay una forma más elegante de hacerlo que aplicando una escala arbitraria a los datos subyacentes?