我正在编写一个函数来创建 ggplot 的散点图,其中点的大小表示具有相同 X 和 Y 坐标的点的数量。
我有一个有效的功能:
require(dplyr)
plot_size_bubbles <- function(x,y) {
dd = data.frame(x,y) %>%
group_by(x,y) %>%
summarise(n=n()) %>%
ungroup()
ggplot(dd, aes(x,y)) + geom_point(aes(size=n))
}
X = sample(1:3,10,replace = T)
Y = sample(1:3,10,replace = T)
plot_size_bubbles(X,Y)
我想把它做成 ggplot 的风格,作为从 geom_point 继承的自定义几何函数。也许我可以使用一些统计功能,不确定。基本上我想将一个数据框传递给 ggplot,映射 x 和 y,并在不事先计算点大小的情况下创建这个图。像
ggplot(data.frame(X,Y), aes(X,Y)) + geom_sizebubble()
此外,从原始数据框中获得 x 和 y 轴标签会很棒。
希望这是可能的,我只是错过了一些东西。