我想知道如何在大小和颜色来自相同数据的图中为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等程序中手动执行此操作...)?谢谢!
答案 0 :(得分:13)
使用guides()
的{{1}}功能。在这种情况下:
ggplot2
ggplot2将尝试为您整合尺度。在这种情况下,它不是因为色标的默认指南是彩条,而尺寸的默认指南是普通图例。一旦你将它们都设置为传说,ggplot 2就会接管并组合它们。
答案 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
的调用,以使颜色栏中的颜色与图例中的颜色相同。