我的问题很简单:我有一些带有 x,y 坐标的点,它们位于由 1x1 正方形组成的矩形网格内。这些点具有平均坐标,因此几个点具有相同的坐标(它们完全重叠)。可重现的例子:
# generate fake data
y <- seq(from=0.5, to=9.5, by=1)
x <- seq(from=0.5, to=4.5, by=1)
xnew <- sample(x,100,replace=T)
ynew <- sample(y,100,replace=T)
data <- data.frame(xnew,ynew)
# create chart
ggplot(data, aes(x=xnew, y=ynew)) + geom_point()
我想表示特定位置的点的频率(x,y 坐标,表示特定的正方形)。stat_bin2d
是朝着正确方向迈出的一步,但是(对我而言)这些垃圾箱莫名其妙地放置在地图上的不同位置,因此很难直观地看到分布。
我可以想象两种不同的解决方案:
1)有没有办法将箱子集中在点上?有时左下角是点,有时是右下角,等等,像这样:
此外,如果盒子足够大以相互接触,那将是理想的,但是当我更改binwidth=c(1,1)
in 时stat_bin2d()
,它实际上会更改计数,尽管 bin 不应该重叠,因为所有点都彼此相距至少 1 平方.
或者,使用磅值:
2)我更喜欢大小能反映浓度的点(那样黑白也会更好)。我尝试使用 geom_point():
ggplot(data, aes(x=xnew, y=ynew))+geom_point(aes(x=xnew,y=ynew, size=..count..))
但我得到了
Error in eval(expr, envir, enclos) : object 'count' not found
然后,如果我添加 `stat="bin",它与对 y 的分配冲突。我看这里:为什么 ggplot2 不允许我为每个单独的点设置大小?,但无法使其工作。
感谢期待任何帮助。