在下面的数据集中,thing1是数字,而thing2是一个因子(但与thing1相同).为简单起见,摘要函数只是bin中的最大值.当z元素是因子时,六边形重叠.谁知道为什么?
library(ggplot2)
library(hexbin)
DF=data.frame(xpos=rnorm(1000),
ypos=rnorm(1000),
thing1=rep(1:9,length.out=100),
thing2=as.factor(rep(1:9,length.out=100)))
ggplot(DF, aes(x=xpos, y=ypos, z=thing1)) +
stat_summary_hex(fun=function(x){x[which.max(x)]})
ggplot(DF, aes(x=xpos, y=ypos, z=thing2)) +
stat_summary_hex(fun=function(x){x[which.max(x)]})
Run Code Online (Sandbox Code Playgroud)

据我所知,R 到 hexbin 中有两个函数:分别位于 fMultivar 和 ggplot2 包中的 hexBinning 和 geom_hex。两者都根据样本中最左下点的坐标对六边形的中心进行参数化。
这意味着,如果您分割样本(根据一个因素,或者在我的例子中,在 MapReduce 作业中),您的六边形就会变得偏心。
因此,我实现了自己的 hexbin 函数,假设 (0,0) 作为网格的中心(即,如果 (0,0) 周围有点,则相应的六边形将在那里居中)并且只需要 r (六边形)作为参数。
实现在这里(抱歉,文本是西班牙语!)。此外,我的实现没有显式循环:它是完全矢量化的。