如何在ggplot geom_point中为两组点实现不同分组配色方案
解决ggplot2中双系列点图不同配色方案的问题
你的问题出在geom_point默认形状不支持fill属性:默认的点形状(比如shape=19)是实心纯色,只有color属性,没有fill,所以你设置的fill映射不会生效;而把color设为transparent时,整个点就消失了。
解决方案:使用支持填充的点形状
选择带填充属性的点形状(比如shape=21-25,其中shape=21是常用的带边框圆形),这类形状同时拥有color(边框色)和fill(填充色)两个独立属性,就能实现两个系列用不同配色方案的需求。
修改后的代码:
set.seed(123) # 加随机种子保证结果可复现 tbl <- data.frame(x = seq(1, 9), y1 = rnorm(9, 10), y2=rnorm(9, 50), class=c(rep("A", 3), rep("B",3), rep("C",3))) ggplot(data = tbl) + # y1系列:用color映射,默认实心形状 geom_point(aes(x=x, y=y1, color=class), size=3) + scale_color_manual(values=c("blue", "lightblue", "purple")) + # y2系列:用fill映射,指定带填充的形状,可自定义边框色 geom_point(aes(x=x, y=y2, fill=class), shape=21, size=3, color="black") + scale_fill_manual(values = c("green", "lightgreen", "darkgreen")) + # 可选:区分两个图例的标题,避免混淆 labs(color="y1 分组", fill="y2 分组")
额外说明
- 如果不需要显示y2系列的边框,可把
color="black"改成color=NA,这样就只显示填充色 - 你也可以选择其他带填充的形状,比如shape=22(方形)、shape=23(菱形),根据需求调整即可
内容的提问来源于stack exchange,提问作者user19622737
相关产品推荐
相关产品推荐

