stat_summary2d缺少已提供的美学?

stat_summary2d缺少已提供的美学?,r,ggplot2,R,Ggplot2,此代码的工作原理如下: library(ggplot2) dat <- data.frame(x = rnorm(100000, 0, 5), y = rnorm(100000, 0, 5), z = rnorm(100000, 42, 42)) hexHist = ggplot(dat, aes(x, y, z = z)) + stat_binhex(bins = 10) + stat_summary_hex(aes(label=..value..), bins =

此代码的工作原理如下:

library(ggplot2)
dat <- data.frame(x = rnorm(100000, 0, 5), y = rnorm(100000, 0, 5), z = rnorm(100000, 42, 42))

hexHist = ggplot(dat, aes(x, y, z = z)) + 
    stat_binhex(bins = 10) +
    stat_summary_hex(aes(label=..value..), bins = 10,
                     fun = function(z) {
                         (round(sum(z)/length(z), 0))
                     },
                     geom = "text")
库(ggplot2)
dat关于这一点,您的问题没有现成的解决方案,因为stat_bin2d经过优化,可用于
geom_rect-它返回xmin、xmax、ymin和ymax美学,而不是x
以及geom_文本所需要的美学

但是可以应用一种变通方法,我使用了
data.table

library(ggplot2)
dat <- data.frame(x = rnorm(100000, 0, 5), y = rnorm(100000, 0, 5), z = rnorm(100000, 42, 42))

hexHist = ggplot(dat, aes(x, y, z = z)) + 
  stat_bin2d(bins = 10)

dat = data.table(dat)
newdat <- data.table(ggplot_build(hexHist)$data[[1]])
newdat[,xmean := (xmin + xmax)/2]
newdat[,ymean := (ymin + ymax)/2]
newdat[,z:=round(sum(dat[x>xmin & x<xmax & y > ymin & y<ymax]$z)/length(dat[x>xmin & x<xmax & y > ymin & y<ymax]$z)) ,by=c('xmean','ymean')]
hexHist + geom_text(data=newdat, aes(xmean, ymean, label=z), col="white")
库(ggplot2)

dat使用
setDT()
而不是
data.table()
更有效。我接受这个答案是因为它应该是有效的,但目前存在一个问题,即bin中心不是实际的bin中心。这和我的问题一样。出于某种原因,它在15个垃圾箱的情况下工作得非常完美,但不多也不少。(这就是为什么我最终使用了
stat\u summary