我有一个包含两列x
和y
的数据框,每列包含0到100之间的值(数据已配对)。我想使用分箱散点图将它们相互关联。如果我使用常规散点图,那么很容易做到:
geom_point(aes(x=x, y=y))
但我希望将点数分为N个区间,从0到100,得到每个区间中x
的平均值,以及该区间点的平均值y
,并将其显示为散点图 - 因此关联分箱平均值而不是原始数据点。
使用geom_smooth()
和geom_point
的某种组合,是否有一种聪明/快捷的方式在ggplot2中执行此操作?或者它必须手动预先计算然后绘制?
答案 0 :(得分:2)
是的,您可以使用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'))
答案 1 :(得分:1)
我建议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)