向ggplot barplot添加vline的问题

时间:2015-02-17 13:18:34

标签: r ggplot2 bar-chart

我正在尝试向ggplot条形图添加垂直线(x轴是连续的)。一个版本按预期工作,第二个版本产生错误。我不明白为什么。

基本上我有一个带有一些数字的向量(" alter"),我想绘制值的频率:

alter <- c(19, 23, 24, 31, 32, 43, 51, 54, 54)
alter.table <- table(alter) # add frequencies

alter.table.df <- data.frame(alter.table)
alter.table.df$alter <- as.numeric(as.character(alter.table.df$alter)) # convert from factor to numeric

alter.table.df$Freq <- as.numeric(alter.table.df$Freq)

alter.mean <- mean(alter, na.rm = T)
alter.md <- median(alter, na.rm = T)


library(ggplot2)

版本A) 工作:

p <- ggplot(alter.table.df, aes(x = alter, y = Freq)) + geom_bar(stat = "identity") 
p

p2 <- p + geom_vline(xintercept = alter.mean, colour = "red") +    geom_vline(xintercept = alter.md, colour = "blue") 
p2

版本B)工作/产生错误:

px <- ggplot(alter.table.df, aes(x = alter, y = Freq)) + geom_bar(stat = "identity") + geom_vline(xintercept = 37, colour = "red") + geom_vline(xintercept = 32, colour = "blue") 

因此,如果我将geom_vlines分别添加到新的情节中,它就会显示出来。如果我试图将它全部放在一个图中,那就失败了。我不明白这是什么问题。

非常感谢任何帮助。

谢谢! 塞巴斯蒂安

1 个答案:

答案 0 :(得分:2)

无需拨打geom_vline两次。你可以给一个值向量作为xintercept Like

的输入
    px <- ggplot(alter.table.df, aes(x = alter, y = Freq)) + geom_bar(stat = 
"identity") + geom_vline(xintercept = c(37,32), colour = "red")