数据:
df<-data.frame(grp=letters[1:4],perc=runif(4))
第一个选项:
首先,创建一个包含每个组的零的第二个数据集
df2<-rbind(df,data.frame(grp=df[,1],perc=c(0,0,0,0)))
然后使用geom_points
和geom_line
:
ggplot(df,aes(y=perc,x=grp))+
geom_point()+
geom_line(data=df2, aes(y=perc, x=grp))+
coord_flip()
看起来很好。创建第二个数据集只需要太多额外的工作。
另一个选择是使用geom_bar并使宽度变小:
ggplot(df,aes(y=perc,x=grp))+
geom_point()+
geom_bar(stat="identity",width=.01)+
coord_flip()
但这也很奇怪,当我保存到.pdf时,并非所有的条都是相同的宽度。
显然必须有一种更简单的方法来做这个,有什么建议吗?
答案 0 :(得分:2)
将geom_segment
与固定yend = 0
一起使用。您还需要expand_limits
来调整绘图区域:
ggplot(df, aes(y=perc, x=grp)) +
geom_point() +
geom_segment(aes(xend=grp), yend=0) +
expand_limits(y=0) +
coord_flip()