【发布时间】:2021-05-01 14:21:24
【问题描述】:
我希望绘制以下直方图:
library(palmerpenguins)
library(tidyverse)
penguins %>%
ggplot(aes(x=bill_length_mm, fill = species)) +
geom_histogram() +
facet_wrap(~species)
对于每个直方图,我想为每个直方图添加一个正态分布,其中包含每个物种的平均值和标准差。
当然,我知道我可以在开始使用 ggplot 命令之前计算组特定平均值和 SD,但我想知道是否有更智能/更快的方法来执行此操作。
我试过了:
penguins %>%
ggplot(aes(x=bill_length_mm, fill = species)) +
geom_histogram() +
facet_wrap(~species) +
stat_function(fun = dnorm)
但这只会在底部给我一条细线:
有什么想法吗? 谢谢!
编辑 我想我要重新创建的是来自 Stata 的这个简单命令:
hist bill_length_mm, by(species) normal
我明白这里有一些建议:using stat_function and facet_wrap together in ggplot2 in R
但我专门寻找一个不需要我创建单独函数的简短答案。
【问题讨论】:
-
你需要计算这个。尝试手动计算
dnorm(penguins$bill_length_mm)- 你会发现可笑 小数字(大约-300 的幂!)。我想您需要先将它们装箱才能理解该 dnorm 调用。四舍五入没有帮助,所以我不认为它(仅仅是)一个浮点问题 -
谢谢 - 我会试试的。我添加了促使我从 Stata 尝试这个的数字。当然,数据会转换为密度