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