如何在 R ggplot 中标准化 stat_binhex 中的计数?

wl2*_*776 1 r ggplot2

我有一个data.frame,有两个变量,测量两个类的参数,每个类的数据量非常不同(~2500 个样本 vs~100000 个样本)。

示例代码:

plot.gg <- ggplot(data=rbind(
                    data.frame(x=rnorm(2500, m=0.41, sd=0.1), y=rnorm(2500, m=12000, sd=1000), type="A"),
                    data.frame(x=rnorm(100000, m=0.60, sd=0.1), y=rnorm(100000, m=6000, sd=1000), type="B")
                  ),
              mapping=aes(x=x, y=y, colour=type, group=type)
             ) + geom_hex(alpha=0.3)

plot.gg
Run Code Online (Sandbox Code Playgroud)

结果: 在此处输入图片说明

在这里,两个类都使用单一调色板,这导致 A 类的灰色填充均匀。我想为 A 类使用单独的调色板,以查看其分布。

另一个可接受的变体是标准化数据以查看百分比而不是计数。但是,我不知道如何使用..count..(..count..)/sum(..count..)

我还需要alphageom_hex看到重叠的课程。

wl2*_*776 5

成立。解决方案aes(fill=..density..)geom_hex.

plot.gg <- ggplot(data=rbind(
                       data.frame(x=rnorm(2500, m=0.41, sd=0.1), y=rnorm(2500, m=12000, sd=1000), type="A"),
                       data.frame(x=rnorm(100000, m=0.60, sd=0.1), y=rnorm(100000, m=6000, sd=1000), type="B")
),
mapping=aes(x=x, y=y, colour=type, group=type)) + geom_hex(alpha=0.6, aes(fill=..density..))

plot.gg
Run Code Online (Sandbox Code Playgroud)

我也增加了alpha,因为它现在看起来更好。