数据可视化|二维统计直方图和三维统计分布图

2020-08-05 01:20:02 浏览数 (2)

二维统计直方图的变量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号红蓝渐变的色系。

代码语言:javascript复制
> 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)

代码语言:javascript复制
> 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 )

代码语言:javascript复制
>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)

0 人点赞