在R中使用ggplot2制作两个变量的分组散点图

3

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

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

我希望能将数据点分成N个区间,从0到100,计算每个区间中x的平均值和该区间内y的平均值,并将其显示为散点图 - 因此相关联的是分组平均值而不是原始数据点。

有没有一种聪明/快速的方法在ggplot2中实现这一点,使用geom_smooth()geom_point的某些组合?还是必须手动预先计算然后绘制?

2个回答

10

是的,你可以使用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'))

在此输入图片描述


2
我建议使用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)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接