ggplot2中如何彻底移除图例legend.key?已尝试element_blank()无效
解决ggplot图例legend.key无法移除的问题
你遇到的legend.key=element_blank()不生效的问题,核心是geom_boxplot的color="black"会同步应用到图例key的轮廓上——就算把key背景设为空,黑色边框还会显示,看起来像是key没被移除。结合你的需求——用fill映射承载长标签、所有箱线图保持灰色,直接修改代码如下:
ggplot(IC_QS, aes(x=ind,y=values))+ geom_boxplot(aes(fill=leg), color="black", outlier.colour = "red")+ labs(title = "XXXXXXXXXX", subtitle = "XXXXXXXXXXX", caption = "XXXXXXXXXXXXX")+ scale_x_discrete(name = "", labels=1:15)+ scale_y_continuous(name = "XXX", breaks = seq(0,10,1), expand = c(0,0.08*max(IC_QS$values)))+ scale_fill_manual(name="Sectors", values = rep("gray", 15), labels=str_wrap(IC_QS_leg,25))+ # 移除图例key的黑色边框,彻底隐藏key元素 guides(fill = guide_legend(override.aes = list(color = NA)))+ theme(legend.position = "right", legend.background = element_blank(), legend.key = element_blank(), # 可选:进一步缩小key的占位空间,让图例更紧凑 legend.key.size = unit(0, "pt"), legend.text = element_text(face = "bold", size = 8), panel.background = element_blank(), panel.grid.major = element_line(colour = "gray", linetype = "dashed"), axis.title.x = element_text(face = "bold",vjust = -1), axis.title.y = element_text(face="bold", vjust = +1.5), axis.text = element_text(colour="black", face = "bold"), title = element_text(face = "bold"))
关键改动说明:
guides(fill = guide_legend(override.aes = list(color = NA))):覆盖图例key的color属性,去掉默认继承的黑色边框,这样legend.key=element_blank()就能彻底隐藏key的背景和轮廓。- 可选的
legend.key.size = unit(0, "pt"):把图例key的占位空间设为0,让图例只显示文字,完全看不到key的痕迹。
这样就能实现你要的效果:X轴用短数字标签,长标签放在图例里,图例彻底没有key元素,所有箱线图保持灰色。
内容的提问来源于stack exchange,提问作者Vinícius Neres
相关产品推荐
相关产品推荐

