2016-01-20 75 views
4

我想在气泡图上添加一个垂直线和一个水平线,而不会对气泡进行重叠绘图。这里来中的数据:如何在气泡图中背景ggplot 2中的geom_vline和geom_hline

a<-c("np", "prepp", "vp", "animal", "artifact", "communication", "ipv", "isv") 
b<-c(-0.51, 0.32, 0.85, -0.61, -0.36, 0.86, -0.02, 1.05) 
c<-c(0.10, 0.25, -0.20, 0.99, 1.09, -0.35, 0.00, -0.08) 
d<-c(68.23, 4.87, 41.42, 2.44, 19.49, 2.44, 112.09, 2.44) 
e<-c("synt", "synt", "synt", "sem", "sem", "sem", "cx", "cx") 

data<-cbind(a, b, c, d, e) 
colnames(data)<-c("Variables", "Dim.1", "Dim.2", "Freq_pmw", "SynSem_index") 
data<-as.data.frame(data) 
data[, 2]<-as.numeric(as.character(data[, 2])) 
data[, 3]<-as.numeric(as.character(data[, 3])) 
data[, 4]<-as.numeric(as.character(data[, 4])) 

radius<-sqrt(data$Freq_pmw/pi) 

plot<-ggplot(data, aes(x=data$Dim.1, y=data$Dim.2)) + 
    xlim(-1, 1.5) + ylim(-1, 3) + 
    theme_bw() + xlab("Dimension 1") + ylab("Dimension 2") 
plot<-plot+geom_point(aes(size=radius, col="darkgrey", fill=data$SynSem_index), pch=21, show.legend=F)+ 
    scale_size_continuous(range=c(1, 20)) + 
    geom_text_repel(label=data$Variables, size=3) + 
    geom_vline(colour="red", xintercept=0) + 
    geom_hline(colour="red", yintercept=0) 
plot 

这样做的输出呈现与下面的图:

enter image description here

如何避免overplotting与坐标轴中的气泡?

感谢您提前!

+2

如果将geom_hline和geom_vline代码的geom_point上方,则该行会被自动放入你的分落后。 – Wyldsoul

回答

3

只需将geom_vline()geom_hline()件首先(ggplot2按顺序绘制图层)即可。

library(ggplot2); library(ggrepel) 
plot0 <- ggplot(data, aes(x=Dim.1, y=Dim.2)) + 
    xlim(-1, 1.5) + ylim(-1, 3) + 
    theme_bw() + xlab("Dimension 1") + ylab("Dimension 2") 


plot0 + geom_vline(colour="red", xintercept=0) + 
     geom_hline(colour="red", yintercept=0) + 
     geom_point(aes(size=radius, fill=SynSem_index), 
        col="darkgrey", 
        pch=21, show.legend=FALSE)+ 
    scale_size_continuous(range=c(1, 20)) + 
    geom_text_repel(aes(label=Variables), size=3) 
+0

谢谢Wyldsoul和Ben Bolker!我忘了ggplot2按顺序处理图层。 – CBechet

+0

如果此答案解决了您的问题,我们鼓励您点击复选标记以接受它。 –