1

我正在尝试将两个数据源组合成一个二维十六进制图,以便它们具有相同的配准(因此数据集 1 中的十六进制与数据集 1 中的十六进制对齐)和绘制时正确的十六进制大小。唉,到目前为止失败:

library(hexbin)
library(ggplot2)

set.seed(123)
x1 <- rnorm(10000)
y1 <- rnorm(10000)

x2 <- rnorm(100, 2)
y2 <- rnorm(100)

xbnds <- range(c(x1, x2))
ybnds <- range(c(y1, y2))
xbins <- 20

h1 <- hexbin(x1, y1, xbnds=xbnds, ybnds=ybnds, xbins=xbins)
h2 <- hexbin(x2, y2, xbnds=xbnds, ybnds=ybnds, xbins=xbins)

df1 <- data.frame(hexbin::hcell2xy(h1), cell=h1@cell, count=h1@count)
df2 <- data.frame(hexbin::hcell2xy(h2), cell=h2@cell, count=h2@count)
df1$type <- 'a'
df2$type <- 'b'

df <- rbind(df1, df2)
df$type <- as.factor(df$type)

p <- ggplot(data=df, aes(x=x, y=y)) +
    geom_hex(data=df, aes(x=x, y=y, fill=stat(density), color=factor(type)), alpha=0.5)
    
p

未对齐的十六进制箱

我曾认为指定 x 和 y 边界以及 x 维度中的十六进制数会对齐十六进制。

也许是一个相关的问题——十六进制似乎太小,或者至少不覆盖样本空间。Perforce,这是使用 hexbin 包(plot(h1))的情节:

hexbin 十六进制

第一个图中的“type a”十六进制应该是这样的,但不是!该图的宽度为 20 个十六进制,但ggplot2版本更多。

提前致谢!

4

0 回答 0