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

在stat_summary_hex中,如果z是一个因子,为什么六边形重叠?,r,ggplot2,R,Ggplot2,在下面的数据集中,thing1是数字,thing2是因子(但在其他方面与thing1相同)。为简单起见,summary函数只是bin中的最大值。当z元素是因子时,六边形重叠。有人知道为什么吗 library(ggplot2) library(hexbin) DF=data.frame(xpos=rnorm(1000), ypos=rnorm(1000), thing1=rep(1:9,length.out=100),

在下面的数据集中,thing1是数字,thing2是因子(但在其他方面与thing1相同)。为简单起见,summary函数只是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)]})

据我所知,R to hexbin中有两个函数:分别在fMultivar和ggplot2包中的hexBinning和geom_hex。两者都根据样本中最左下点的坐标参数化六边形的中心

这意味着如果你分割你的样本(根据一个因子,或者,在我的例子中,在mapreduce作业中),你的六边形会变得偏心

因此,我实现了我自己的hexbin函数,该函数假设(0,0)为网格的中心(即,如果(0,0)周围有点,则相应的六边形将居中),并且只需要r(六边形的半径)作为参数


实现是(对不起,文本是西班牙语!)。此外,我的实现没有显式循环:它是完全矢量化的

它看起来像一只虫子。我只使用
stat\u binhex
复制相同的行为。我的意思是
ggplot(DF,aes(x=xpos,y=ypos,z=thing2))+stat\u binhex()
。也许你应该联系软件包维护人员。看起来六边形是重叠的,因为ggplot为同一绘图中的每个因子级别创建了一个新层。您可以看到匹配层六边形彼此不重叠。但我不确定如何约束装箱的xlim/YLIM,我认为这是需要的。但为什么要计算因子的最大值。。。这不是已经是一个“错误”了吗?@affael,我们可以用一个适合因素的函数来代替这个函数——可能是最高频率水平(即模式)。