ggplot2绘图点有填充色但图例点全黑问题求助
解决ggplot2中带填充形状的图例显示全黑问题
修正后的代码
library(ggplot2) data <- list() data[['ID']] <- c("1","1","1","1","2","2","2","2","3","3","3","3") data[['Group']] <- rep(c("A","B"),6) data[['x']] <- seq(1:12) data[['y']] <- log(data[['x']]) df <- data.frame(data) ggplot(df, aes(x=x, y=y, fill=ID)) + geom_point(aes(shape=Group), size=6, color="black") + scale_fill_manual( values = c("1"="red", "2"="blue", "3"="green"), guide = guide_legend(override.aes = list(shape = 21)) ) + scale_shape_manual(values=c("A"=21,"B"=22))
问题原因与解决逻辑
- 你使用的21、22这类带轮廓的点形状,
fill控制内部填充色,color控制轮廓色,但ggplot2默认的fill图例使用实心点(如形状19),这类形状的fill和color属性是绑定的,导致填充色被默认黑色覆盖,显示全黑。 - 通过在
scale_fill_manual中添加guide = guide_legend(override.aes = list(shape = 21)),强制让fill图例使用带填充的形状,就能正确显示对应ID的填充色。 - 额外优化:将
fill=ID移至全局aes中精简代码,显式设置color="black"统一轮廓色,避免默认值干扰。
内容的提问来源于stack exchange,提问作者JohnB
相关产品推荐
相关产品推荐

