3

我有一个包含两列的数据框,x每列y都包含 0 到 100 之间的值(数据是成对的)。我想使用分箱散点图将它们相互关联。如果我要使用常规散点图,这很容易做到:

geom_point(aes(x=x, y=y))

但我想将这些点放入从 0 到 100 的 N 个 bin 中,获取x每个 bin 中的平均值和该ybin 中点的平均值,并将其显示为散点图 - 所以关联 binned平均值而不是原始数据点。

geom_smooth()在ggplot2中是否有一种聪明/快速的方法可以使用和的某种组合来做到这一点geom_point?还是必须手动预先计算然后绘制?

4

2 回答 2

8

是的,您可以使用stat_summary_bin.

set.seed(42)
x <- runif(1e4)
y <- x^2 + x + 4 * rnorm(1e4)
df <- data.frame(x=x, y=y)

library(ggplot2)
(ggplot(df, aes(x=x,y=y)) +
  geom_point(alpha = 0.4) +
  stat_summary_bin(fun.y='mean', bins=20,
                   color='orange', size=2, geom='point'))

在此处输入图像描述

于 2016-04-25T05:42:54.867 回答
0

我建议geom_bin2d

DF <- data.frame(x=1:100,y=1:100+rnorm(100))

library(ggplot2)
p <- ggplot(DF,aes(x=x,y=y)) + geom_bin2d()
print(p)

在此处输入图像描述

于 2013-06-05T18:53:23.957 回答