2013-05-15 42 views
3

我想在使用ggplot2生成的圖中的分類數據中添加較小的網格線。例如,在ggplot2中爲分類數據創建較小的網格線

library("ggplot2") 
data<-data.frame(xcategory=rep(c("a","b","c"),each=30), yvalue=c(1,3,6)) 

ggplot(data,aes(x=xcategory,y=yvalue,alpha=1.0,size=5))+ 
       geom_point(position=position_jitter(width=0.1,height=0.0))+ 
       theme_bw()+ 
       scale_x_discrete(name="Categorical Data") + 
       scale_y_continuous(name="Continuous Response",limits=c(0,7)) + 
       theme(axis.text.x=element_text(angle = 90),legend.position="none") 

產生如下圖:

What I don't want

但我想對於分類網格線綁定的類別名稱,這樣我可以抖動內的所有數據網格線。下面是油漆的例子,我在紅做出的修改

What I want

紅線邊界「B」可能是我所需要的,我只是想說明寬度相等的三列。

幫助或指導我錯過了類似的問題,非常感謝。我試圖通過「主題」添加網格信息,但沒有成功。

回答

5

您可以使用geom_vline()將線條添加到繪圖並使用數字(如0.5,1.5)來設置位置。數字是以0.5開始並且經過1直到「類別數量」+0.5的向量。這些行將在類別名稱之間。

ggplot(data,aes(x=xcategory,y=yvalue,alpha=1.0,size=5))+ 
    geom_vline(xintercept=c(0.5,1.5,2.5,3.5),color="red")+ 
    geom_point(position=position_jitter(width=0.1,height=0.0))+ 
    theme_bw()+ 
    scale_x_discrete(name="Categorical Data") + 
    scale_y_continuous(name="Continuous Response",limits=c(0,7)) + 
    theme(axis.text.x=element_text(angle = 90),legend.position="none") 

enter image description here

+0

這項功能對我提供的簡單的例子。如果我有不同數量的類別,我想我可以用一個簡單的函數創建一個新的xintercept向量。謝謝。 +1 – Docuemada

+0

@Docuemada是的,只需創建一個以0.5開始,以「分類數量」結尾的值向量+0 –

+0

這是我更通用的修復方法:'+ geom_vline(xintercept = seq(1,length(mydata [,1 ]),2)+。5,顏色= 「紅」)' – ErichBSchulz

相關問題