手动绘制 hist(X, freq = FALSE) [重复]

问题描述 投票:0回答:1

我策划

set.seed(123)
X <- rnorm(100)
hist(X, freq = FALSE, main = "", xlab = "", ylab = "")

在 R 中,我尝试手动将

hist(X, freq = FALSE)
绘制为

breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table)
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))

为什么两个图的ylabs不同?

顺便说一句,可以将它们绘制在一起进行比较

set.seed(123)
X <- rnorm(100)

par(mfrow = c(1, 2))

hist(X, freq = FALSE, main = "", xlab = "", ylab = "")

breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table)
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))
r histogram
1个回答
0
投票

当你计算

freq
时,你应该通过
mean(diff(breaks))

标准化它
set.seed(123)
X <- rnorm(100)

par(mfrow = c(1, 2))

hist(X, freq = FALSE, main = "", xlab = "", ylab = "")

breaks <- seq(-2.5, 2.5, by = 0.5)
freq_table <- table(cut(X, breaks = breaks, include.lowest = TRUE))
freq <- freq_table / sum(freq_table) / mean(diff(breaks)) # this is the term that affects the `density`
barplot(freq, main = "", xlab = "", ylab = "", names.arg = names(freq_table))

你会看到的

© www.soinside.com 2019 - 2024. All rights reserved.