如何在ggplot2的geom_col图表中移除图例的‘colour’项?
解决方法
你的问题出在错误地在全局aes()里设置了col='black',这会让ggplot把color当成需要映射的变量,从而生成额外的color比例尺(图例项)。另外你添加的scale_color_manual()也是多余的——你根本不需要对color变量做映射,只是想给柱子和误差线设置固定的黑色边框而已。
按照下面的步骤修改代码即可:
- 移除全局
aes()中的col='black'参数 - 在
geom_col()里直接设置color="black"(这是固定样式,不要放在aes映射里) - 删除多余的
scale_color_manual(values = color_palette)语句
修改后的完整代码:
# 加载必要包 library(ggplot2) # 数据集 data <- data.frame(name = c("prog1","prog2","prog3","prog4", "prog1","prog2","prog3","prog4"), factor = c("fact1","fact1","fact1","fact1", "fact2","fact2","fact2","fact2"), price = c(1,2,3,4, 10,11,12,13), sem = c(0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1)) # 自定义颜色 palette color_palette <- c("#000000","#E69F00","#56B4E9","#D55E00") # 生成图表 ggplot(data, aes(x = name, y = price, group = factor, fill = factor))+ geom_col(position = "dodge", width = 0.6, color = "black")+ # 这里设置柱子边框为黑色 geom_errorbar(aes(ymin = price, ymax = price + sem), width = 0.3, position = position_dodge(0.5), color = "black") + guides(fill = guide_legend(NULL))+ xlab("Scale")+ ylab("Xlabel")+ ggtitle("Title", subtitle = "Subtitle")+ theme(plot.title = element_text(hjust=0.5, size = 16), plot.subtitle = element_text(hjust=0.5, size = 14), axis.text = element_text(size = 13), axis.title = element_text(size = 13), legend.key.size = unit(0.6, 'cm'))+ scale_fill_manual(values = color_palette)+ coord_flip()
这样修改后,就只会保留fill的比例尺,多余的color项就被移除了。
内容的提问来源于stack exchange,提问作者sneeze_shiny
相关产品推荐
相关产品推荐

