如何为geom_points()设置点大小并添加尺寸图例?
解决ggplot2气泡图同时自定义点大小、显示尺寸图例并设置标题的问题
要同时实现自定义点大小、显示尺寸图例并设置图例标题,核心是将size纳入aes()映射,并通过scale_size_identity()直接使用数据中的尺寸值,同时开启图例。以下是修正后的完整代码:
library("ggplot2") set.seed(123) # 固定随机种子,结果可复现 x <- sample(2000, 1000, replace=T) y <- sample(2000, 1000, replace=T) category <- sample(c("one", "two"), 1000, replace = TRUE) # 修正原代码行数不一致问题 size <- sample(2000, 1000, replace=T)/50 df <- data.frame(x, y, category, size) ggplot(df, aes(x=x, y=y, fill=category, size=size)) + geom_point(shape=21, color="black") + # 分别设置填充图例和尺寸图例 guides( fill=guide_legend(override.aes=list(size=5)), # 调整分类图例的点大小,避免过大 size=guide_legend(title="自定义尺寸标题") # 设置尺寸图例的标题 ) + scale_size_identity(guide="legend") # 直接使用数据中的size值作为点大小,同时生成图例
关键说明:
- 原第一个示例中,
size=df$size是直接传入参数而非映射到aes(),ggplot不会为非映射的参数生成图例,因此无法显示尺寸图例。 - 原第二个示例将
size放入aes(),但默认的scale_size_continuous()会将数据中的size值映射到0-6的默认大小范围,导致无法直接使用自定义的尺寸值。使用scale_size_identity(guide="legend")可以让点的大小完全匹配数据中的size数值,同时强制生成尺寸图例。 - 通过
guides()函数可以分别控制填充图例和尺寸图例的样式,包括设置尺寸图例的标题。
内容的提问来源于stack exchange,提问作者another_rando
相关产品推荐
相关产品推荐

