如何将颜色和大小的比例组合成一个图例?

时间:2015-05-05 17:55:36

标签: r ggplot2

我想知道如何在大小和颜色来自相同数据的图中为scale_size() {ggplot2}中的size_scale着色。

示例:

 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))

正如您所看到的,V3对于数据点的颜色和大小是相同的。如何将颜色渐变合并到大小比例(除了在Illustrator等程序中手动执行此操作...)?谢谢!

2 个答案:

答案 0 :(得分:13)

使用guides()的{​​{1}}功能。在这种情况下:

ggplot2

ggplot2将尝试为您整合尺度。在这种情况下,它不是因为色标的默认指南是彩条,而尺寸的默认指南是普通图例。一旦你将它们都设置为传说,ggplot 2就会接管并组合它们。

enter image description here

答案 1 :(得分:3)

这可以通过请求不使用colourbar而是使用颜色的图例来实现。使用您的数据框:

  ggplot(df,aes(V1,V2))+
     geom_point(aes(colour=V3,size=V3))+
     scale_colour_gradient(low="grey", high="black",guide="legend")+
     scale_size(range=c(1,10))

如果你也想要颜色条,那么实现这一目标有一点点可以从你没有使用审美fill的事实中获益。因此,您也可以将V3映射到fill,它会为此比例绘制一个颜色栏:

  ggplot(df,aes(V1,V2))+
     geom_point(aes(colour=V3,size=V3,fill=V3))+
     scale_colour_gradient(low="grey", high="black",guide="legend")+
     scale_size(range=c(1,10)) + 
     scale_fill_gradient(low="grey",high="black") +
     guides(fill=guide_colourbar(reverse=TRUE))

我添加了对guides的调用,以使颜色栏中的颜色与图例中的颜色相同。

enter image description here