1个变量的分布可以用hist,两个变量呢?可以用等高线图、登高颜色图。
1. 效果图

2. 源代码
# 2d概率密度图
library(ggplot2)
p1=ggplot(faithful, aes(eruptions, waiting) )
plots=list()
#1. 散点图
plots[[1]]=p1 +
geom_point(colour = "black") +
theme_bw()+ggtitle("1")
# 等高线图
plots[[2]]=p1 +
stat_density2d(color = "black", size = 1) +
theme_bw()+ggtitle("2")
# 散点图+等高线
plots[[3]]=p1 +
stat_density2d(color = "black", size = 1) +
geom_point(colour = "black") +
theme_bw()+ggtitle("3")
# 将密度映射到等高线
plots[[4]]=p1 +
#stat_density2d(aes(color = ..level..), size = 1.5) +
stat_density2d(aes(color = after_stat(level) ), linewidth = 1.5) +
geom_point(colour = "black") +
scale_color_distiller(palette = "RdYlGn") +
theme_bw()+ggtitle("4")
#2. geom = "tile" 绘制颜色表示的密度图
plots[[5]]=p1 +
stat_density2d(geom = "tile", aes(fill = ..density..), contour = FALSE) +
scale_fill_distiller(palette = "RdYlGn") +
theme_classic()+ggtitle("5")
# geom = "raster" 同上,栅格化
plots[[6]]=p1 +
stat_density2d(geom = "raster", aes(fill = ..density..), contour = FALSE) +
scale_fill_distiller(palette = "RdYlGn") +
theme_bw()+ggtitle("6")
# 对带宽进行调整
plots[[7]]=p1 +
stat_density2d(geom = "raster", aes(fill = ..density..),
contour = FALSE,
h = c(1, 5)) + # 修改带宽,h参数传参给 kde2d()产生密度估计 >?kde2d
scale_fill_distiller(palette = "RdYlGn") +
theme_bw()+ggtitle("7")
#h Bandwidth (vector of length two). If NULL, estimated using MASS::bandwidth.nrd().
# 3. 综合
plots[[8]]=p1 +
stat_density2d(geom = "raster", aes(fill = ..density..), contour = FALSE) +
stat_density2d(color = "black", size = 0.7) +
geom_point(colour = "black", size=1) +
scale_fill_distiller(palette = "RdYlGn") +
theme_classic()+ggtitle("8")
# 细节调整
plots[[9]]=p1 +
stat_density2d(geom = "raster", aes(fill = ..density..), contour = F) +
#stat_density2d(color = "black", size = 0.6, bins=8) +
stat_density2d(color = "black", size = 0.6, binwidth=0.0035) +
geom_point(colour = "black", size=0.8) +
scale_fill_gradient2(low = "navy",
mid = "#FFF200", midpoint = 0.012,
high="#ED1C24") +
theme_classic()+ggtitle("9")
# 拼接图
patchwork::wrap_plots(plots, ncol = 3)