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,y=day,fill=day))+geom_density_ridges(alpha=0.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(bins=25)在geom_hex()中可以用bins=指定分块的个数。 上图中颜色浅的值高, 颜色浅的值低。 可以用scale_color_gradient人为地指定代表频数的渐变色
p + geom_hex(bins=25)+ 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,color=species)) + 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,color=species)) + stat_density_2d(color = "black", linewidth = 0.2)+geom_point(alpha = 0.5, size=3)对应取值概率的等值线图
上面的密度图都是取二元密度函数值相等的地方连接起来成为等值线图, 没有直接与分布概率挂钩。 ggdensity包则可以直接显示中心区域的取值概率
library(ggdensity) ggplot(data = iris,mapping = aes(x = petal_length,y = petal_width,fill=species,color=species)) + geom_hdr()ggplot(data = iris,mapping = aes(x = petal_length,y = petal_width,color=species)) +geom_hdr_lines()ggplot(data = iris,mapping = aes(x = petal_length,y = petal_width,fill=species,color=species)) +geom_hdr_lines()+geom_point()