ggplot2中geom_pointrange配合scale_color_manual设置颜色不生效问题
问题解决:ggplot2中scale_color_manual自定义颜色不生效
问题原因
自定义颜色不生效的核心原因是没有将color属性映射到数据变量,scale_color_manual仅当绘图逻辑中存在color美学映射时才会触发匹配,你当前的代码仅定义了颜色标度,没有关联映射规则,因此不会生效。
解决方案
方案1:添加color映射(自动生成图例)
在ggplot的全局美学映射或geom_pointrange的局部映射中加入color = methods即可,修改后的代码如下:
library(ggplot2) statsSomeSet <- read.table(header=TRUE, text=" methods min max mean Method1_LR 40 80 60 Method2_LR 50 90 70 Method3_LR 30 70 50 Method1_RF 50 90 70 Method2_RF 40 80 60 Method3_RF 30 70 50 ") statsSomeSet$methods <- factor(statsSomeSet$methods, levels = statsSomeSet$methods) p <- ggplot(data = statsSomeSet, mapping = aes(x = methods, y = mean, color = methods)) + geom_pointrange(mapping = aes(ymin = min, ymax = max)) + scale_color_manual(values = c("green", "red", "blue","green", "red", "blue" )) p + labs(title = "Methods")
方案2:直接指定图形颜色(无图例)
如果不需要生成对应颜色的图例,可以直接在geom_pointrange层传入颜色向量,不需要调用scale_color_manual,代码如下:
library(ggplot2) statsSomeSet <- read.table(header=TRUE, text=" methods min max mean Method1_LR 40 80 60 Method2_LR 50 90 70 Method3_LR 30 70 50 Method1_RF 50 90 70 Method2_RF 40 80 60 Method3_RF 30 70 50 ") statsSomeSet$methods <- factor(statsSomeSet$methods, levels = statsSomeSet$methods) p <- ggplot(data = statsSomeSet, mapping = aes(x = methods, y = mean)) + geom_pointrange(mapping = aes(ymin = min, ymax = max), color = rep(c("green", "red", "blue"), 2)) p + labs(title = "Methods")
内容的提问来源于stack exchange,提问作者Mine
相关产品推荐
相关产品推荐

