r - geom_density 在提供的美学方面是盲目的?
问题描述
我不得不承认,自从我使用 ggplot 以来已经有一段时间了,但这似乎有点傻。要么我在尝试制作密度图时遗漏了一些基本的东西,要么 ggplot2 (v3.3.2) 中存在错误
test <- data.frame(Time=rnorm(100),Age=rnorm(100))
ggplot(test,aes(y=Time,x=Age)) +
geom_density(aes(y=Time,x=Age))
生产
ggplot(测试,aes(y=时间,x=年龄))+
- geom_density(aes(y=Time,x=Age)) 错误:geom_density 需要以下缺失的美学:y
'y'美学怎么会缺失?
解决方案
使用时有两种情况geom_density()
。这取决于您指定的统计层:
- 标准情况是统计密度,它使 geom_density() 函数根据给定 x 值的频率分布计算其 y 值。在这种情况下,您不能证明是美学的,因为这些是在幕后计算的。
- 然后是第二种情况,这是您的情况,您必须通过将 stat 更改为identity来明确指定:如果由于某种原因,您已经预先计算了要直接输入密度函数的值,则需要这样做。
如果您混合使用案例 1) 和 2),就会出现问题。但我同意,错误消息不是很清楚,可以提及以确保使用的统计信息是所需的。
library(ggplot2)
test <- data.frame(time = rnorm(100), age = rnorm(100))
#if you want to use precalculated y values you have to change the used stat to identity:
ggplot(test) +
geom_density(aes(x = age, y = time),
stat = "identity")
# compared to the case with the default value of stat: stat = "density"
ggplot(test) +
geom_density(aes(x = age))
由reprex 包(v0.3.0)于 2020 年 8 月 4 日创建
推荐阅读
- excel - 为列表中的候选人运行宏
- python - 读取文本文件内容并用逗号分割
- flutter - 在列中换行
- constraints - ocl中的一对多关联约束
- python - 如何使用 selenium 从 python 中的 span 类中获取特定数字?
- regex - 在文件编辑器上用分号替换每行中的第一个空格
- python-3.x - 来自其他 python 脚本的未定义函数的变量
- python - 与 Python 的 map 和 list 函数混淆
- php - 尝试使用 PHP / PDO / MySQL 插入时出错
- swift - Swift 如何通过辅助功能 VoiceOver 引擎了解当前聚焦的对象