R,ggplot2:在气泡图中创建具有正值和负值的单个图例

时间:2016-11-20 11:47:53

标签: r plot ggplot2 legend bubble-chart

我想为气泡图创建一个带有正负值的图例,如使用sp :: bubble()生成的情节below

但是,出于各种原因,我想在ggplot2中复制它。我得到的最接近的是使用缩放符号生成单个图例,但实际的气泡本身是缩放的。

上面的图是使用下面的代码创建的

# create data frame
x=sample(seq(1,50),50,T)
y=sample(seq(1,50),50,T)
plot_dat=data.frame(x=x,y=y,value=rnorm(50,0,25))

# plot
library(ggplot2)
ggplot(data=plot_dat, aes(x=x, y=y,colour=factor(sign(value)), size=value)) +
geom_point() +  
scale_size(breaks = c(-40,-30,-20,-10,0,10,20,30,40,50), range = c(0.5,4)) +
scale_colour_manual(values = c("orange", "blue"), guide=F) +
guides(size = guide_legend(override.aes = list(colour = list("orange","orange","orange","orange","blue","blue","blue","blue","blue","blue"),size=c(3,2.5,2,1,0.5,1,2,2.5,3,4)))) 

1 个答案:

答案 0 :(得分:3)

继续使用abs(value)作为颜色的大小和符号(值)。

提供breaks=的{​​{1}}参数,其中包含所需中断的重复项(例如c(10,10,20,20,...))。接下来,为scale_size_continuous()提供您想要的值。最后,使用labels=guides()设置您自己的值和颜色顺序。

override.aes

要为ggplot(data=plot_dat, aes(x=x, y=y,colour=factor(sign(value)), size=abs(value))) + geom_point() + scale_color_manual(values=c("orange","blue"),guide=FALSE)+ scale_size_continuous(breaks=c(10,10,20,20,30,30,40,40,50,50),labels=c(-50,-40,-30,-20,-10,10,20,30,40,50),range = c(1,5))+ guides(size = guide_legend(override.aes = list(colour = list("orange","orange","orange","orange","orange","blue","blue","blue","blue","blue"), size=c(4.92,4.14,3.50,2.56,1.78,1.78,2.56,3.50,4.14,4.92)))) 函数中的size=参数指定确切的值,可以使用guides()库中的函数rescale()。重新缩放您正在绘制的整个值范围,以及scalesrange=参数提供的断点。

scale_size_continuous()