使用R中的qplot()在直方图中绘制垂直峰值线

时间:2015-08-09 01:14:42

标签: r ggplot2 histogram

我使用ggplot2附带的钻石数据集并创建价格字段的直方图。您可以使用

加载数据集
install.packages(ggplot2)
data(diamonds)

我正在尝试分析使用此行创建的直方图中的峰值

qplot(price, data = diamonds, geom = "histogram", col = 'blues') 

enter image description here

我想在此直方图中绘制一条峰线并找出该值的值。我在这里探讨了几个问题,但没有一个与qplot合作。任何人都可以建议我如何在直方图的峰值处绘制线条。

1 个答案:

答案 0 :(得分:3)

手动方式:您可以使用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)

enter image description here

该位置的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)