ggplot2:将轴连接到点的线

时间:2015-03-27 13:36:35

标签: r ggplot2

数据:

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_pointsgeom_line

进行绘图
ggplot(df,aes(y=perc,x=grp))+
  geom_point()+
  geom_line(data=df2, aes(y=perc, x=grp))+
  coord_flip()

TooMuchWork_LooksGood

看起来很好。创建第二个数据集只需要太多额外的工作。

另一个选择是使用geom_bar并使宽度变小:

ggplot(df,aes(y=perc,x=grp))+
  geom_point()+
  geom_bar(stat="identity",width=.01)+
  coord_flip()

WeirdThinBars_NotSameSizeinPDF

但这也很奇怪,当我保存到.pdf时,并非所有的条都是相同的宽度。

显然必须有一种更简单的方法来做这个,有什么建议吗?

1 个答案:

答案 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()

enter image description here