R语言ggplot多组点着色问题:TEST2分组未按Type着色如何处理
问题解答
着色失败原因
- 你为TEST2分组的
geom_point绑定了fill = factor(Type)的映射,但ggplot默认给离散shape变量分配的是1~20号无填充属性的实心形状,这类形状仅识别colour属性,不识别fill属性,自然无法按Type填充颜色。 - 你在ggplot全局美学映射中定义了
colour = Status,而TEST2分组所有记录的Status字段均为NA,全局映射会让所有TEST2的点统一渲染为NA对应的默认灰色,进一步覆盖了颜色相关的自定义设置。
实现自定义颜色的修改方案
你只需要调整两个配置:一是给TEST2的shape映射指定使用21~25号带填充属性的形状;二是覆盖TEST2点的全局colour映射为固定边框色,再通过scale_fill_manual指定Type对应的填充色即可。
修正后的代码如下:
ggplot(data = dummydata, mapping = aes(x = DateTime, y = value, group = 1, colour = Status))+ geom_point(data = dummydata[dummydata$Name == "TEST", ], shape = 21, fill = "black")+ geom_path(data = dummydata[dummydata$Name == "TEST", ])+ facet_grid(Name ~ ., scale = "free") + geom_point(data = dummydata[dummydata$Name != "TEST", ], aes(shape = factor(Category), fill = factor(Type)), colour = "black", # 覆盖全局colour映射,用黑色作为点边框 size = 2) + # 指定离散shape使用带填充属性的形状池(21~25号) scale_shape_discrete(solid = FALSE) + # 自定义Type字段的填充颜色 scale_fill_manual(values = c("ERROR" = "red", "WARNING" = "blue")) + labs(colour = "Status", fill = "Type", shape = "Description")+ labs(x = "Dates", y = "Values") + theme(axis.text.x = element_text( angle = 90, vjust = 1, hjust = 1 ))+ guides(fill = guide_legend(override.aes = list(shape = 21)))
内容的提问来源于stack exchange,提问作者Maria Provelegiou
相关产品推荐
相关产品推荐

