R语言——二维统计直方图、二维核密度估计图

张开发
2026/4/12 22:09:18 15 分钟阅读

分享文章

R语言——二维统计直方图、二维核密度估计图
参考资料R语言数据可视化之美二维统计直方图主要针对二维数据的统计分析X-Y轴变量为数值型。首先要从X轴和Y轴变量数据分别找出他们的最大值和最小值然后确定一个区间使其包含全部测量数据将区间分成若干小区间统计测量结果出现在各小区间的频数。在平面直角坐标系中X轴和Y轴分别标出每个组的端点每个方块bin的颜色代表对应的频数一般我们也称这样的统计图为二维频数分布直方图。对于二维统计直方图R中的ggplot2包中的geom_bin2d()函数和geom_bex()函数都可以绘制参数bins为在X轴和轴变量分别设定的区间数目。library(RColorBrewer) library(ggplot2) colormap-rev(brewer.pal(11,Spectral)) # 构造正态分布的数据集 x1-rnorm(mean1.5,n5000) y1-rnorm(mean1.6,n5000) x2-rnorm(mean2.5,n5000) y2-rnorm(mean2.2,n5000) df-data.frame(xc(x1,x2),yc(y1,y2)) ggplot(df,aes(x,y)) geom_hex(bins40,na.rmTRUE) scale_fill_gradientn(colorscolormap) theme_classic()library(RColorBrewer) library(ggplot2) colormap-rev(brewer.pal(11,Spectral)) # 构造正态分布的数据集 x1-rnorm(mean1.5,n5000) y1-rnorm(mean1.6,n5000) x2-rnorm(mean2.5,n5000) y2-rnorm(mean2.2,n5000) df-data.frame(xc(x1,x2),yc(y1,y2)) ggplot(df,aes(x,y)) geom_bin2d(bins40,na.rmTRUE) scale_fill_gradientn(colorscolormap) theme_classic()library(RColorBrewer) library(ggplot2) colormap-rev(brewer.pal(11,Spectral)) # 构造正态分布的数据集 x1-rnorm(mean1.5,n5000) y1-rnorm(mean1.6,n5000) x2-rnorm(mean2.5,n5000) y2-rnorm(mean2.2,n5000) df-data.frame(xc(x1,x2),yc(y1,y2)) # 绘制二维核密度图 ggplot(df,aes(x,y)) stat_density_2d(geomraster,aes(fillafter_stat(density)),contourFALSE) scale_fill_gradientn(colorscolormap) theme_classic()library(RColorBrewer) library(ggplot2) colormap-rev(brewer.pal(11,Spectral)) # 构造正态分布的数据集 x1-rnorm(mean1.5,n5000) y1-rnorm(mean1.6,n5000) x2-rnorm(mean2.5,n5000) y2-rnorm(mean2.2,n5000) df-data.frame(xc(x1,x2),yc(y1,y2)) # 绘制二维核密度图 ggplot(df,aes(x,y)) stat_density_2d(geompolygon,aes(fillafter_stat(level)),bins30) scale_fill_gradientn(colorscolormap) theme_classic()三维统计直方图其绘制方法是先使用gplots包的hist2d()函数求二维统计直方图数值其中bins表示X轴和Y轴方向的箱形总数最后使用plot3D包的hist3D()函数绘制三维柱形图。对于三维核密度估计图其绘制方法是先使用MASS包的kde2d()函数计算二维核密度估计其中h为X轴和Y轴方向的带宽最后使用plot3D包的persp3D()函数绘制三维曲面图。library(plot3D) library(gplots) df_hist-hist2d(df$x,df$y,nbins30) pmar-par(marc(5.1,4.1,4.1,6.1)) hist3D(xdf_hist$x,ydf_hist$y,zdf_hist$counts, colcolormap,borderblack,space0,alpha1,lwd0.1, xlabx,ylaby,zlabCount,clabCount, ticktypedetailed,btyf,boxTRUE, theta65,phi20,d3,colkeylist(length0.5,width1))library(plot3D) library(MASS) df_density-kde2d(df$x,df$y,n50,hc(width.SJ(df$x),width.SJ(df$y))) pmar-par(marc(5.1,4.1,4.1,6.1)) persp3D(df_density$x,df_density$y,df_density$z, theta60,phi20,d3, colcolormap,borderblack,lwd0.1, btyf,boxTRUE,ticktypedetailed, xlabx,ylaby,zlabdensity,clabdensity, colkeylist(length0.5,width1))我们还可以将二维统计直方图和二维核密度估计图结合一维的统计分布图表一起展示R中的gridExtra包的grid.arrange()函数可以实现ggplot2包绘制的一维和二维统计分布图的组合。library(ggplot2) library(gridExtra) library(RColorBrewer) Colormap-rev(brewer.pal(11,Spectral)) # 构造正态分布数据集 N-300 x1-rnorm(mean1.5,nN) x2-rnorm(mean1.6,nN) y1-rnorm(mean2.5,nN) y2-rnorm(mean2.2,nN) data-data.frame(xc(x1,x2),yc(y1,y2)) hist_top-ggplot(data,aes(x)) geom_density(colorblack,fill#5E4FA2,linewidth0.25) theme_void() hist_right-ggplot(data,aes(y)) geom_density(colorblack,fill#5E4FA2,linewidth0.25) theme_void() coord_flip() empty-ggplot()theme_void() scatter-ggplot(data,aes(x,y)) stat_binhex(bins15,na.rmTRUE,colorblack) scale_fill_gradientn(colorsColormap) theme_minimal() grid.arrange(hist_top,empty,scatter,hist_right, ncol2,nrow2,widthsc(4,1),heightsc(1,4))

更多文章