数据:
df<-data.frame(grp=letters[1:4],perc=runif(4))
Run Code Online (Sandbox Code Playgroud)
第一个选项:
首先,为每个组创建包含零的第二个数据集
df2<-rbind(df,data.frame(grp=df[,1],perc=c(0,0,0,0)))
Run Code Online (Sandbox Code Playgroud)
然后用geom_points和绘图geom_line:
ggplot(df,aes(y=perc,x=grp))+
geom_point()+
geom_line(data=df2, aes(y=perc, x=grp))+
coord_flip()
Run Code Online (Sandbox Code Playgroud)

这看起来很好。创建第二个数据集的额外工作太多了。
另一个选项是使用 geom_bar 并使宽度变小:
ggplot(df,aes(y=perc,x=grp))+
geom_point()+
geom_bar(stat="identity",width=.01)+
coord_flip()
Run Code Online (Sandbox Code Playgroud)

但这也很奇怪,当我保存到 .pdf 时,并非所有的条都具有相同的宽度。
显然必须有一种更简单的方法来做到这一点,有什么建议吗?
使用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()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |