我有一些数据,其中大多数值(实际数据中约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显示数学吗?
答案 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()