1.244 FAQ-1032 点密度图的有效性验证
Last Update: 11/27/2024
点密度图是使用散点图显示数据密度,其中散点的颜色映射到数据密度。而密度将使用核密度估计来计算。
为了计算核密度估计,Origin 使用了一种快速算法,该算法利用了 2D 区间逼近和 2D 插值。先把全图划分为若干小格子, 然后对每个格子内的(x,y)点进行计数,以获得具有区间计数的矩阵。然后利用 2D 快速傅立叶变换执行离散卷积,以计算每个网格的密度值。计算密度值的 4 次根以将密度标尺映射到色标。
Origin 可以使用同一数据集生成与 R 类似的结果
R 和 Origin 结果的比较
参考
数据:
1 个响应变量 (y), 1 预测变量 (x)
100000 观察值
生成的数据
数据文件: DP.csv
Origin 项目文件: density_dots_validation_sample.opju
生成图形的 R 代码
xx= read.csv("DP.csv",header=FALSE) as.list(body(smoothScatter)) trace("smoothScatter",quote(browser()),at=19) w<-c(0.056990976577602, 0.13442535086237) smoothScatter(xx, nrpoints = 0,nbin=151,bandwidth=w) #Debug and run following script #Type "n" to enter line 19 stopifnot((nx <- length(xm)) == nrow(dens), (ny <- length(ym)) == ncol(dens)) ixm <- 1L + as.integer((nx-1)*(x[,1]-xm[1])/(xm[nx]-xm[1])) iym <- 1L + as.integer((ny-1)*(x[,2]-ym[1])/(ym[ny]-ym[1])) z<-dens[cbind(ixm, iym)] df<-data.frame(x=x[,1],y=x[,2],z=z) library(ggplot2) sp<-ggplot(df, aes(x,y,colour=z)) + geom_point(shape=".") + theme(panel.background = element_rect(fill = 'black'), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank()) sp cval<-seq(0,1,length.out=6) sp+scale_color_gradientn(values = cval,colours = rainbow(20))
Keywords:验证, 对比 R
