如何在ggplot直方图中显示离群值?

时间:2019-09-26 06:50:52

标签: r ggplot2 histogram

我有一些数据,其中大多数值(实际数据中约1000万)接近零,但有一些异常值。我想用直方图显示分布。对于数据的内容和分析,离群值也很重要,因此在直方图中应可见。在y-axis上使用对数刻度效果很好,但是仍然存在问题。 y-axis现在从1开始。因此,其中只包含一个元素的垃圾箱不会绘制,因此无法与空垃圾箱区分开。另外,我收到一条警告消息,说明空箱的值是无限的(正确的是$ log(0)=-\ infty $)。

我做了一个小代码示例:

library(ggplot2)
set.seed(123)

data <- data.frame(x=c(abs(rnorm(10000)), 5.25, 5.5, 7.5))

ggplot(data, aes(x)) + 
    geom_histogram(binwidth=1, boundary=0) + 
    scale_y_log10()

很好地显示了5和6之间的两个离群值,但无法将7.5处的两个离群值与两个空容器区分开。如何告诉ggplot从小于1的y-value开始绘制垃圾箱?

PS:stackoverflow不允许mathjax显示数学吗?

1 个答案:

答案 0 :(得分:1)

您可以使用scale_y_sqrt()作为替代转换:

library(ggplot2)
set.seed(123)

data <- data.frame(x=c(abs(rnorm(10000)), 5.25, 5.5, 7.5))

ggplot(data, aes(x)) + 
    geom_histogram(binwidth=1, boundary=0) + 
    scale_y_sqrt()