r - 如何在离散的 X 轴上获得平滑的密度曲线?
问题描述
我有一个带有少量级别的离散 x 轴。我想要一条显示分布的平滑曲线。当我将其保留gear
为一个因素时,我得到的条形并不是我正在寻找的,当我gear
用作数字时,我得到锯齿状的分布,这也不完全是我正在寻找的。
有人对显示离散数据的平滑分布有什么建议吗?
library(tidyverse)
mtcars %>%
group_by(gear) %>%
summarise(mpg = mean(mpg)) %>%
ggplot(aes(factor(gear), mpg)) +
geom_density(stat = "identity")
解决方案
我同意这可能会造成混淆或误导的评论,因为连接分类变量意味着可能是主观或误导的频谱和间距。
但是假设它对您的用例有意义,您可以通过将因子转换为“幕后”的数字连续数据,然后将标签调整回分类类型来解决此问题。例如:
mtcars %>%
mutate(gear = as.factor(gear)) %>%
group_by(gear) %>%
summarise(mpg = mean(mpg)) %>%
mutate(factor_num = as.numeric(gear)) -> temp
ggplot(temp, aes(x = factor_num, y = mpg)) +
# This geom draws a smooth line through your points
ggalt::geom_xspline(spline_shape = -0.5) +
geom_point() +
scale_x_continuous(breaks = temp$factor_num, labels = temp$gear, name = "gear") +
expand_limits(y = 0)
推荐阅读
- javascript - 在多次通过 Ajax 调用加载我的部分视图后,我的 Kendo 窗口失去了 closable:true
- spring - CronTriggerFactoryBean 不适用于新版本
- javascript - 绕过 https 中 http iframe 的混合内容警告
- python - 在没有 Internet 的情况下安装 python 库依赖项
- java - 查找一个点是否在多边形内 - JAVA jts / awt / geotools
- r - 聚合数据的人口统计数据包问题
- javascript - 节点上的自动化事件是否在节点断开时取消?
- angular - 如何在所有对象的数组中显示特定字段
- .net - JSON 反序列化为接口
- python - 从 .pdf 中提取粗体和带下划线的文本