给定一个虚拟数据集:
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”,但这会调整所有点数。我想稍微调整一下重叠的点,以使它们可读。
答案 0 :(得分:5)
如果重叠的数据值不是很重要,那么快速而肮脏的解决方案是指定:
+ geom_text(size = 5, check_overlap = T)
因此不会绘制文本重叠之前的文本。
答案 1 :(得分:3)
添加position=position_jitter()
并使用width
和height
参数。例如
+ geom_text(size=5, position=position_jitter(width=1, height=2) )
答案 2 :(得分:1)
试用directlabels
套餐。它可能有你需要的东西。 (特别是函数direct.label
包裹着ggplot
代码。)