utilizzando due gradienti di colore in scala su un solo ggplot

Vorrei combinare un gradiente di scala del colore per i punti su un grafico a dispersione insieme a un gradiente di scala del colore per un testo che va sulla trama. Posso farli separatamente come mostrato nel mio esempio qui sotto, ma non riesco a metterli insieme … c’è un modo per farlo?

Ecco il mio codice di esempio dei due tipi di grafici (p e p1) che voglio combinare

l <- data.frame(prev=rnorm(1266), aft=rnorm(1266), day=as.factor(wday(sample(c(2:6),1266,replace=TRUE),abbr=TRUE, label=TRUE)), month=as.factor(month(Sys.Date()+months(sample(0:11,1266,replace=TRUE)),abbr=TRUE, label=TRUE)), ind=c(1:1266)) cors <- ddply(l, c("month", "day"), summarise, cor = round(cor(prev, aft), 3)) # below the text gains the colour gradient p <- ggplot(l, aes(x=prev, y=aft)) + geom_point() + scale_colour_gradient(low = "red", high="blue")+ facet_grid(day~month, scales="free_x")+ geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, y=Inf, vjust=1, hjust=1, show_guide=FALSE)+ geom_hline(aes(yintercept=0))+ geom_smooth(method="loess") p # below the points gain the colour gradient p1 <- ggplot(l, aes(x=prev, y=aft)) + geom_point(aes(colour=ind)) + scale_colour_gradient("gray")+ facet_grid(day~month, scales="free_x")+ geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, y=Inf, vjust=1, hjust=1, show_guide=FALSE)+ geom_hline(aes(yintercept=0))+ opts(legend.position="none") + geom_smooth(method="loess") p1 

Non mi aspetto che questo possa essere fatto. Una trama ha solo una scala per estetica. Credo che se aggiungi più scale_color , il secondo sovrascriverà il primo. Penso che Hadley abbia creato questo comportamento di proposito, all’interno di una trama la mapping dai dati a una scala nella trama, ad esempio il colore, è unica. Ciò garantisce che tutti i colors della trama possano essere confrontati facilmente, perché condividono lo stesso scale_color .