R ggplot2从点到y = 0画线

Posted

技术标签:

【中文标题】R ggplot2从点到y = 0画线【英文标题】:R ggplot2 draw line from point to y=0 【发布时间】:2014-06-16 20:25:17 【问题描述】:

我有一个包含 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")

【问题讨论】:

听起来你正在创建一个临时条形图,你确定你不想只使用 geom_bar() 吗? docs.ggplot2.org/0.9.3.1/geom_bar.html 【参考方案1】:

如果您需要一条指向 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)

【讨论】:

以上是关于R ggplot2从点到y = 0画线的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化强制设置x轴y轴坐标的起始点为0或者其他实战

从图中单独删除负面标签(ggplot + R)

R语言ggplot2可视化设置y轴坐标为百分比(percent)但是百分比数值包含小数点零(50.0%)移除百分比后面的0(是50%而非50.0%)

R ggplot2 线性回归

R语言ggplot2可视化:为ggplot2可视化图像添加双Y轴并自定义右侧Y轴坐标轴线条的色彩(change secondary y axis line color)

R语言ggplot2可视化散点图并以与y=0为界绘制基于散点包围的多边形(ploygon)对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充