首页 文章

R ggplot2从点到y = 0画线

提问于
浏览
1

我有一个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 回答

  • 3

    如果你需要一条到y = 0的垂直线,那么 geom_segment() 内的 xend= 值应该与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_bar() 可以获得与 geom_segment() 相同的效果,并将 width= 设置为较低的值 .

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

相关问题