在ggplot2中为分类数据创建次要网格线

时间:2013-05-15 16:10:16

标签: r ggplot2 themes gridlines

我想在使用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”的红线可能就是我需要的所有东西,我只想说明三根相等宽度的列。

非常感谢帮助或指导我错过的类似问题。我尝试通过“主题”添加网格信息但没有成功。

1 个答案:

答案 0 :(得分:6)

您可以使用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