我在R中使用ggplot成功绘制直方图时遇到了困难,希望得到有关如何做到这一点的帮助。
**一些背景知识:**我已经在R中进行了一个模拟,模拟了一个流行病的爆发动态,现在我想创建一个超过10,000个流行病模拟的最终大小分布图。
**到目前为止我所做的工作:**我已经模拟了10,000次爆发,在每一次爆发中,我都找到了爆发的最终规模,并将其保存在f
中。从typeof(f)
中,我得到了答案double
,下面是f
的一个简短概述:
> tail(f)
[1] 4492 1 2 1 1 4497
然后我在下面代码的帮助下创建了一个(正确的)分布图,但是现在想使用ggplot
创建这个分布图,以获得更好的直方图。
h = hist(f)
h$density = h$counts/sum(h$counts)
plot(h,freq = FALSE,
ylim = c(0,1))
**我的尝试:**我尝试通过下面的代码自己做这件事,但是我没有得到正确的结果。我将在下面发布这两个图的图像,其中第一个是正确的,因为你可以看到y值加起来是正确的,第二个是我使用ggplot
得到的,这里y轴上的值是不正确的。我可以做什么来创建一个像第一个一样的图表,但是使用ggplot
代替?我猜这与我设置y为密度有关,因为某种原因它不太匹配。
ggplot(data=NULL, aes(x = f)) +
geom_histogram(aes(y = ..density..),
colour = 1, fill = "white")
图片:
第一节第一节第一节第一节第一次
2条答案
按热度按时间dw1jzc5e1#
您想要的输出在y轴上没有密度,而是百分比。您的ggplot在y轴上有密度,这是直方图的默认值。要使用
ggplot
获得相同的结果,您需要使用geom_histogram(aes(y=..count../sum(..count..))
yhived7q2#
基R函数
hist
计算用于绘制频率的最佳bin数。该数可在ggplot
中重复使用,如下所示:由reprex package(v2.0.1)于2023年1月7日创建