R ggplot2从点到y = 0画线

时间:2014-04-30 13:26:45

标签: r ggplot2 line

我有一个包含3列的数据框。我正在用数字变量(Prob)绘制因子(X)。我想从每个点到y = 0线画一条线。在阅读此帖R ggplot vertical and horizontal line intercept at center后,我尝试使用下面的代码执行此操作。结果不是我的预期。我认为这可能与我的x轴变量是一个因素有关。我有更好的办法吗?

    pmf.data = as.data.frame(c(0,1,2,"NA"))
    pmf.data$Prob = c(0.4921875, 0.015625, 0.4921875, 0)
    colnames(pmf.data)[1] = c("X")
    pmf.data$label = c("P0", "P1", "P2", "PNA")

    ggplot(data=pmf.data, aes(x=X, y=Prob)) + geom_point() +
      geom_text(aes(label = label), hjust = 2) +
      geom_segment(aes(xend=Prob, yend=0), color="blue") +
      ylab(expression(bold(paste(f[(X)](x))))) +
      ggtitle("Multinomial pdf for X")

1 个答案:

答案 0 :(得分:3)

如果您需要一条y = 0的垂直线,那么xend=内的geom_segment()值应与x值相同 - 即X

ggplot(data=pmf.data, aes(x=X, y=Prob)) + geom_point() +
  geom_text(aes(label = label), hjust = 2) +
  geom_segment(aes(xend=X, yend=0), color="blue") +
  ylab(expression(bold(paste(f[(X)](x))))) +
  ggtitle("Multinomial pdf for X")

使用geom_segment()可以获得与geom_bar()相同的效果,并将width=设置为较低值。

ggplot(data=pmf.data, aes(x=X, y=Prob))+geom_bar(stat="identity",width=0.01)