【发布时间】:2015-11-08 21:35:55
【问题描述】:
我有一个关于使用 ggplot 绘制密度图的问题。为了弄清楚我的问题,我创建了以下示例数据:
DT2 <- data.table(Rating = c(1:19),
Nndef = c(50, 30, 70, 70, 60, 40, 60, 30, 30, 10,
5, 3, 1, 0, 0, 0, 0, 0, 0))
现在我想绘制每个评级类别的 Nndef 数量的密度图。在我这样做之前,我将每一行复制 Nndef 的数量,以便每个评级类别出现 Nndef 次。
DT2 <- DT2[rep(1:.N,Nndef)]
现在这应该可以解决问题了:
ggplot(DT2, aes(x =Rating))+ theme_bw() +
geom_density(aes(x=Rating))
这实际上是我期望使用这些数据发生的事情。但是,现在考虑一下
DT1 <- data.table(Rating = c(1:19),
Nndef = c(460, 480, 1300, 2600, 5700, 4700, 9300, 10600, 7700, 8200,
6500, 6700, 5300, 4700, 2700, 1100, 1200, 400, 420))
DT1 <- DT1[rep(1:.N,Nndef)]
ggplot(DT1, aes(x =Rating))+ theme_bw() +
geom_density(aes(x=Rating))
我熟悉geom_density 中的adjust 参数,但我在for 循环中运行了很多这些ggplots。我想获得一个平滑的密度图(就像使用 DT2 的第一个图一样),但不想自己手动调整每个数字。此外,我不明白为什么它在后一种情况下会产生扭曲的密度分布,而在前一种情况下却相当准确。有什么想法吗?
提前谢谢你
【问题讨论】:
-
您的数据似乎是离散的。密度图用于连续随机变量。条形图或许更适合您。
-
我知道它适用于连续随机变量。但是,我喜欢密度图中默认值的可视化。我真的更喜欢使用
geom_density,除非这当然不能以自动化方式实现。
标签: r ggplot2 density-plot