# install.packages("ggdensity")
library("ggdensity")
library("ggplot2")
密度图可以看作是平滑后的直方图,能大致观察连续变量的分布情况;那么 2D 密度图(2d density plot)就是 x 轴和 y 轴上各有一个连续变量,同时展示两个变量的关系。
并且,当数据的点非常多并且出现严重重叠时,2D 密度图能通过颜色的渐变,更清晰的展现两个数值变量间的关系。
ggdensity
是一个新的 ggplot2
扩展 R 包,其中包含几个简单函数替换 ggplot2
原有函数,能更加简单的制作 2D 密度图以及相关图形。
安装和载入需要的 R 包:
以 iris 数据为例,使用函数 geom_hdr()
:
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_hdr(xlim = c(3, 9), ylim = c(0, 5))
右侧 legend 显示对应区域的概率,默认为 50%,80%,95% 和 99%。
并且,geom_hdr()
能兼容使用 ggplot2
包中的其它函数:
# 去除背景颜色和网格线
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_hdr(xlim = c(3, 9), ylim = c(0, 5)) +
theme_bw() +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
分面图:
ggplot(iris, aes(Sepal.Length, Sepal.Width, fill = Species)) +
geom_hdr(xlim = c(3, 9), ylim = c(0, 5)) +
scale_fill_brewer(palette = "Set1") + # 调色
theme_bw() + # 主题
facet_wrap(~Species) # 分成多个图
可以使用 geom_hdr_lines()
绘制等高线图(contour plot)。
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_hdr_lines(aes(
colour = after_stat(probs)),
alpha = 1,
xlim = c(3, 9),
ylim = c(0, 5)
+ # 等高线图
) geom_point(alpha = 0.5) +
scale_colour_brewer(palette = 1) +
theme_bw()