二维统计直方图的变量x和y的类型必须是数值型。在x和y轴找到各自的最大值和最小值,使得测定的所有数据都包含在【Xmin,Xmax】,【Ymin,Ymax】之间。再把X和Y的区间分成若干个小区间,统计测量的数据值出现在各个小区间的频数,就是相当于图中每个方块bin的颜色就是测定数据值出现在该位置区间的频数。
随机生成数据
#构建数据框
x1<-rnorm(mean=2.4,6200)
y1<-rnorm(mean=4.6,6200)
x2<-rnorm(mean=3.0,6200)
y2<-rnorm(mean=5.5,6200)
data<-data.frame(x=c(x1,x2),y=c(y1,y2))
颜色搭配
颜色搭配是根据RColorBrewer包的主题方案进行的,特别喜欢RdYlBu双色渐变系的颜色,比较喜欢该盘的第1-11号红蓝渐变的色系。
> colormap<-rev(brewer.pal(11,'RdYlBu'))
> colormap
[1] "#313695" "#4575B4" "#74ADD1" "#ABD9E9" "#E0F3F8" "#FFFFBF" "#FEE090" "#FDAE61" "#F46D43"
[10] "#D73027" "#A50026"
绘图-二维统计直方图
#每个方块是六边形的
ggplot(data,aes(x,y))+geom_hex(bins=30,na.rm=TRUE)+scale_fill_gradientn(colours=colormap)+theme_classic()
#每个方块是方块形的
三维统计分布图
library(plot3D)
library(gplots)
data_hist<-hist2d(data$x,data$y,nbins=30)
> data_hist
----------------------------
2-D Histogram Object
----------------------------
Call: hist2d(x = data$x, y = data$y, nbins = 30)
Number of data points: 12400
Number of grid bins: 30 x 30
X range: ( -1.319707 , 6.575825 )
Y range: ( 1.156832 , 8.862895 )
>hist3D(x=data_hist$x,y=data_hist$y,z=data_hist$counts,col=colormap,border="black",alpha=0.9,lwd=0.4,xlab="x",ylab="y",zlab="count",clab="count",ticktype="detailed",bty="f",box=TRUE,theta=45,phi=30,d=5)