手動方式:您可以使用ggplot_build
提取直方圖信息。然後找到最大y值,以及直方圖中相應條的x位置。
library(ggplot2)
data(diamonds)
## The plot as you have it
q <- qplot(price, data = diamonds, geom = "histogram", col = 'blues')
## Get the histogram info/the location of the highest peak
stuff <- ggplot_build(q)[[1]][[1]]
## x-location of maxium
x <- mean(unlist(stuff[which.max(stuff$ymax), c("xmin", "xmax")]))
## draw plot with line
q + geom_vline(xintercept=x, col="steelblue", lty=2, lwd=2)
在該位置的y值是
## Get the y-value
max(stuff$ymax)
# [1] 13256
使用stat_bin
另一種選擇,應該給予同樣的結果如上,但它是因爲隱變量的比較隱晦。
q + stat_bin(aes(xend=ifelse(..count..==max(..count..), ..x.., NA)), geom="vline",
color="steelblue", lwd=2, lty=2)
我認爲你需要定義你的意思是「高峯」線。這個例子中的行會在哪裏? – hrbrmstr
水平線?垂線?其他線?無論如何,簡單的答案就是將數據轉換爲您想要繪製的內容,然後繪製而不是依賴ggplot(這是一個恰好會進行一些基本轉換的繪圖軟件包)來進行數據整形。 – Gregor
我只想繪製一個垂直線,只要有一個峯值(對應於y軸)。 @格雷戈你能否給我一個例子,這將是非常有幫助的。 – python