gpt4 book ai didi

r - ggplot2 中具有可变大小 binwidth 的直方图

转载 作者:行者123 更新时间:2023-12-03 00:21:46 27 4
gpt4 key购买 nike

我有以下数据

 dati <- read.table(text="
class num
1 0.0 63530
2 2.5 27061
3 3.5 29938
4 4.5 33076
5 5.6 45759
6 6.5 72794
7 8.0 153177
8 10.8 362124
9 13.5 551051
10 15.5 198634
")

我想生成一个具有可变大小 bin 的直方图,以便每个条形的面积反射(reflect)每个 bin 的总数量 (num)。我试过了

bins <- c(0,4,8,11,16)
p <- ggplot(dati) +
geom_histogram(aes(x=class,weight=num),breaks = bins)

但是,这会生成一个直方图,其中每个条的长度等于每个箱的总数量。由于箱宽度是可变的,因此面积与数量不成正比。我无法在ggplot2中解决这个看似简单的问题。谁能帮我吗?

最佳答案

认为您正在寻找密度图 - this closely related question已经有大部分答案了。您在 geom_histogram() 中调用 y = ..密度..

这是有效的,因为stat_bin(回想一下geom_histogram()geom_bar() + stat_bin(),并且stat_bin() 构造一个包含列 count密度 的数据框。因此调用 y = ..密度..拉出右侧的密度列,而默认值(计数)就像您调用 y = ..count..

##OP's code
ggplot(dati) + geom_histogram(aes(x=class, weight=num),
breaks = bins)

Count Histogram

##new code (density plot)
ggplot(dati) + geom_histogram( aes(x=class,y = ..density.., weight=num),
breaks = bins, position = "identity")

Density Histogram

您可以在 online ggplot2 help page 中找到更多示例对于geom_histogram()

关于r - ggplot2 中具有可变大小 binwidth 的直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com