ggplot_比例表现01
多个密度的其它画法geom_density_ridges 是 R 语言中 ggridges 包提供的一个函数用于绘制密度山峦图。这种图形特别适合展示数据在时间或空间上的分布。library(ggplot2) library(ggridges) library(dplyr) library(GGally) iris read.csv(../../seaborn-data/iris.csv) tips read.csv(../../seaborn-data/tips.csv)Attaching package: dplyr The following objects are masked from package:stats: filter, lag The following objects are masked from package:base: intersect, setdiff, setequal, unionggplot(data tips,mapping aes(x total_bill,yday,fillday))geom_density_ridges(alpha0.5)Picking joint bandwidth of 2.96二元分布直方图和等值线图对二元分布样本(xi,yix_i,y_ixi,yi) 可以用散点图表现其分布情况 当点比较多时 可以使用alpha参数设定一定的透明度 使得颜色深表示点比较密集 颜色浅表示点比较稀疏。 但是 当点的数量很大时 设定透明度就效果不好了。可以用类似直方图的想法将二元分布的取值区域分块 每块统计频数 然后用不同深浅的颜色为每个小块染色 颜色的深浅代表频数高低。 这样的图形称为二维直方图。 每个小块可以是正方形或者正六边形。蜂窝图geom_hex绘制蜂窝图需要安装hexbin依赖库p - ggplot(data iris,mapping aes(x petal_length,y petal_width )) p geom_hex(bins25)在geom_hex()中可以用bins指定分块的个数。 上图中颜色浅的值高 颜色浅的值低。 可以用scale_color_gradient人为地指定代表频数的渐变色p geom_hex(bins25) scale_color_gradient( low #9696F2, high #0A0A3D)str(iris)data.frame: 150 obs. of 5 variables: $ sepal_length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ sepal_width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ petal_length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ petal_width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ species : chr setosa setosa setosa setosa ...二元密度估计图二维直方图估计的是二元阶梯函数 也可以像一元情况估计分布密度那样估计连续的二元分布密度 并用等值线图表示类似于地图中的等高线。ggplot(data iris,mapping aes(x petal_length,y petal_width,colorspecies)) stat_density_2d(color black, linewidth 0.2)ggplot(data iris,mapping aes(x sepal_length,y sepal_width)) stat_density_2d(color black, linewidth 0.2) facet_grid(~species)ggplot(data iris,mapping aes(x petal_length,y petal_width,colorspecies)) stat_density_2d(color black, linewidth 0.2)geom_point(alpha 0.5, size3)对应取值概率的等值线图上面的密度图都是取二元密度函数值相等的地方连接起来成为等值线图 没有直接与分布概率挂钩。 ggdensity包则可以直接显示中心区域的取值概率library(ggdensity) ggplot(data iris,mapping aes(x petal_length,y petal_width,fillspecies,colorspecies)) geom_hdr()ggplot(data iris,mapping aes(x petal_length,y petal_width,colorspecies)) geom_hdr_lines()ggplot(data iris,mapping aes(x petal_length,y petal_width,fillspecies,colorspecies)) geom_hdr_lines()geom_point()