调整ggplot中的特定文本标签以避免重叠

时间:2013-12-07 03:29:54

标签: r plot ggplot2 labels

给定一个虚拟数据集:

V1<-c(1,10,30,22,22,20)
V2<-c(4,17,4,33,33.2,15)
V3<-c(20,20,15,34,33,30)
V4<-c("A","A","A","B","B","B")
DF<-data.frame(V1,V2,V3,V4)

如果我要绘制一个如此的气泡图:

symbols(DF$V1,DF$V2,circles=V3,inches=0.35,fg="darkblue",bg="red")
text(DF$V1,DF$V2,V4,cex=0.5)

我与第4和第5个标签文本有些重叠。使用下面的代码,我可以通过调整特定点来删除这种重叠

text(DF$V1,DF$V2+c( 0, 0, 0, 1, -1,0 ),V4,cex=0.5)

哪个工作正常,但我想在ggplot中工作。如果我做一个简单的ggplot

ggplot(DF,aes(x=V1,y=V2,size=V3,label=V4),legend=FALSE)+geom_point(color='darkblue',fill="red", shape=21)+theme_bw()+geom_text(size=5)

我得到相同的重叠,但我不知道如何调整各个点以避免重叠。我尝试过使用“thigmophobe.labels”,但这会调整所有点数。我想稍微调整一下重叠的点,以使它们可读。

3 个答案:

答案 0 :(得分:5)

如果重叠的数据值不是很重要,那么快速而肮脏的解决方案是指定:

+ geom_text(size = 5, check_overlap = T)

因此不会绘制文本重叠之前的文本。

答案 1 :(得分:3)

添加position=position_jitter()并使用widthheight参数。例如

 + geom_text(size=5, position=position_jitter(width=1, height=2) )

答案 2 :(得分:1)

试用directlabels套餐。它可能有你需要的东西。 (特别是函数direct.label包裹着ggplot代码。)