ggplot2可视化彼此重叠绘制的点数:stat_bin2d或geom_tile或点大小?

rad*_*adu 2 r ggplot2

我的问题很简单:我有一些带有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()
Run Code Online (Sandbox Code Playgroud)

我想表示特定位置的点的频率(x,y坐标,表示特定的正方形).stat_bin2d是朝着正确方向迈出的一步,但是这些箱子莫名其妙地(对我而言)放置在地图上的不同位置,这使得难以直观地看到分布.

我可以想象两种不同的解决方案

1)有没有办法将垃圾箱放在点上?有时左下角位于该点,有时是右下角等,如下所示:就像在这里一样

另外,如果盒子足够大以便彼此接触将是理想的,但是当我改变输入binwidth=c(1,1)stat_bin2d(),它实际上改变了计数,尽管箱子不应该重叠,因为所有点彼此相距至少1平方. .

或者,使用磅值:

2)我更喜欢尺寸能反映浓度的点(黑色和白色也会更好).我尝试使用geom_point():

ggplot(data, aes(x=xnew, y=ynew))+geom_point(aes(x=xnew,y=ynew, size=..count..))
Run Code Online (Sandbox Code Playgroud)

但我明白了

Error in eval(expr, envir, enclos) : object 'count' not found
Run Code Online (Sandbox Code Playgroud)

然后,如果我添加`stat ="bin",它与y的赋值冲突.我看了一下:为什么ggplot2不允许我为每个点设置一个大小?,但无法使其工作.

感谢您的期待.

Rol*_*and 5

data2 <- aggregate(data$x,by=list(x=data$x,y=data$y),length)
names(data2)[3] <- "count"


ggplot(data2, aes(x=x,y=y)) + geom_point(aes(size=count))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Sam*_*rke 5

ggplot2版本2.0.0引入了geom_count()来做到这一点.使用您的数据:

ggplot(data, aes(x=xnew,y=ynew)) +
  geom_count()
Run Code Online (Sandbox Code Playgroud)

产量: geom_count图表