在stat_summary_hex中,如果z是一个因子,为什么六边形会重叠?

时间:2013-06-28 21:11:50

标签: r ggplot2

在下面的数据集中,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)]})

thing1 thing2

1 个答案:

答案 0 :(得分:0)

据我所知,R到hexbin中有两个函数:分别是fMultivar和ggplot2包中的hexBinning和geom_hex。并且都根据样本中最左下角的坐标来参数化六边形的中心。

这意味着如果你拆分你的样本(根据一个因素,或者在我的情况下,在mapreduce工作中)你的六边形会变得古怪。

所以我实现了我自己的hexbin函数,它假设(0,0)为网格的中心(即,如果有(0,0)周围的点,相应的六边形将在那里居中)并且只需要r(六角的辐射)作为参数。

实施是here(抱歉,文字是西班牙语!)。而且,我的实现没有显式循环:它是完全矢量化的。