usando várias escalas de tamanho em um ggplot

Estou tentando construir um gráfico que mostra transições de uma classe para outra. Eu quero ter círculos representando cada classe dimensionada de acordo com um atributo de classe e setas de uma classe para outra, dimensionadas de acordo com o número de transições de uma classe para outra.

Como um exemplo:

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)

Gostaria de poder dimensionar as setas em uma escala diferente para os círculos. Idealmente, eu gostaria de uma lenda com ambas as escalas, mas eu entendo isso pode não ser possível (usando dois gradientes de cor de escala em um ggplot)

Existe uma maneira mais elegante de fazer isso do que aplicar o escalonamento arbitrário aos dados subjacentes?

questionAnswers(1)

yourAnswerToTheQuestion