如何让ggplot中geom_point散点图的点大小取决于数据计数?
解决ggplot散点图点大小匹配分组计数的问题
有两种常用方法可以实现让点的大小对应Season和type组合的行数(计数):
方法一:提前统计分组计数后绘图
先通过数据预处理统计每个分组的行数,再将计数映射到点的size属性:
library(dplyr) library(ggplot2) # 统计每个Season-type组合的行数,结果存为count列 df_count <- df %>% count(Season, type, name = "count") # 绘制散点图,size绑定count列 ggplot(df_count, aes(x = Season, y = type, size = count)) + geom_point(fill = "blue", shape = 21)
注:使用shape=21是因为这个形状支持填充色(fill)设置,默认实心点的fill属性不会生效。
方法二:直接在绘图时计算计数
无需预处理数据,利用ggplot的stat(count)直接在图层中获取分组计数:
library(ggplot2) ggplot(df, aes(x = Season, y = type)) + geom_point(aes(size = stat(count)), fill = "blue", shape = 21) + scale_size_continuous(name = "分组行数") # 可选:自定义图例名称
如果需要调整点的大小范围,可以添加scale_size_continuous(range = c(2, 10))参数,修改range内的数值来控制最小和最大点的尺寸。
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

