I would like to know how to colorize the size_scale in scale_size() {ggplot2}
in a plot where the size and color are from the same data.
Example:
library(ggplot2)
df<-as.data.frame(cbind(rep(1:10,10),
rep(1:10,each=10),
rnorm(100)))
ggplot(df,aes(V1,V2))+
geom_point(aes(colour=V3,size=V3))+
scale_colour_gradient(low="grey", high="black")+
scale_size(range=c(1,10))
As you can see the V3
is the same for the color and the size of the data points. How can I merge the color gradient to the size scale (except do this manually in program such as Illustrator...)? Thanks!
Use the
guides()
function ofggplot2
. In this case:ggplot2 will try to integrate the scales for you. It doesn't in this case because the default guide for a color scale is a colorbar and the default guide for size is a normal legend. Once you set them both to be legends, ggplot 2 takes over and combines them.
This can be achieved by requesting to use not a
colourbar
but a legend for the colour. Using your data frame:If you also want the colour bar, there is a little hack to achieve this that profits from the fact that you are not using the aesthetic
fill
. So you can mapV3
tofill
as well and it will draw a colourbar for this scale:I added the call to
guides
in order to have the colours in the colourbar ordered the same way as in the legend for the sizes.