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或者其他实战
R语言ggplot2可视化设置y轴坐标为百分比(percent)但是百分比数值包含小数点零(50.0%)移除百分比后面的0(是50%而非50.0%)
R语言ggplot2可视化:为ggplot2可视化图像添加双Y轴并自定义右侧Y轴坐标轴线条的色彩(change secondary y axis line color)
R语言ggplot2可视化散点图并以与y=0为界绘制基于散点包围的多边形(ploygon)对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充