什么时候用它
密度图把一列连续观测平滑成一条分布曲线。曲线高的地方表示观测更集中,低而长的尾部表示少量观测延伸得更远。它适合回答“数据主要落在哪里”“是否偏斜”“有没有一个以上的峰”,而不是读取某个精确观测值。
密度图与箱线图互补:箱线图用中位数和四分位数给出稳定摘要,密度图保留完整形状,但形状会受到带宽影响。小样本优先画原始点或箱线图;每组至少有二三十个观测时,密度轮廓才开始有解释价值。
曲线怎么算
核密度估计可以理解为:在每个观测上放一个小的平滑鼓包,再把所有鼓包相加。geom_density() 默认使用高斯核;真正决定曲线长相的主要参数是带宽。
- 带宽小:保留更多局部起伏,也更容易把随机噪声画成多个峰。
- 带宽大:曲线更稳定,但相邻峰可能被抹成一个宽峰。
- 曲线下面积固定为 1:峰高表示相对集中程度,不是样本数。组间样本量不同,默认密度曲线仍然各自归一化。
adjust 是默认带宽的倍数,而不是一个新的统计方法。正式出图前应在合理范围内比较几档带宽,确认结论不是某一个参数制造出来的。
怎么读
- 先看位置。 整条曲线向右移动,说明这一组整体取值更高。
- 再看宽窄。 分布越宽,观测越分散。
- 看偏斜和尾部。 一侧拖得更长,说明极端方向不对称。
- 谨慎看多峰。 小鼓包可能只是样本少或带宽过小,不一定存在真实亚群。
- 分组图必须共用横轴。 每个面板自行缩放会让不同月份看起来同样宽,失去比较基础。
常见陷阱
- 把曲线高度当人数。 标准密度的面积是 1;要表达样本量,应另外标注
n,不要靠峰高猜。 - 组数多仍全部叠在一起。 透明度只能缓解遮挡,还会产生色板里不存在的混合色。三组以上通常改用分面或分层密度。
- 用透明混色评价色板。 重叠区看到的是浏览器或绘图设备混合后的颜色,不是原始色板;Palette Lab 的主图因此采用互不覆盖的分层布局。
- 带宽只试一个值。 一个看似明确的双峰,可能把
adjust从0.6改成1.2就消失。 - 忽略缺失值。
geom_density(na.rm = TRUE)会安静地删掉缺失;应先报告每组真正参与估计的n。 - 类别顺序交给字母序。 月份、剂量等有序分组必须显式固定 levels,否则曲线顺序可能既不符合时间,也不符合图例。
- 裁掉密度尾部。 用
scale_x_continuous(limits = ...)会先删除范围外观测再重新估计密度;只想放大画面应使用coord_cartesian()。
配色
月份从五月到九月有自然顺序,但每个月仍是独立分组。这里使用 walter_white2 的五种颜色保持月份身份;分层图按时间顺序排列,让位置承担主要顺序信息,颜色负责快速定位。
重叠密度需要透明度,但透明度会改变明度并制造混合色,所以它适合分析,不适合单独判断色板。分面和分层版本让每组颜色完整铺开,更适合观察大面积填色、轮廓清晰度以及相邻颜色是否容易混淆。色板不足组数时不要循环用色,应保留曲线并把未编码组改成中性上下文。




