如何修改ggplot图例中geom_rect图层的符号颜色
问题原因
你遇到的问题是geom_rect设置的透明度(alpha=0.01)过高导致的:极低的透明度会让红色填充几乎透明,视觉上接近白色,所以会误认为图例颜色没有同步修改。
解决方案
提供两种可选方案,你可以根据需求选择:
- 如果你需要保留绘图区域矩形的极低透明度,只需要在
fill对应的guide_legend中添加override.aes参数,单独调高图例的透明度即可,修改后的代码如下:
ggplot(df) + geom_rect(aes( xmin = 2000, xmax = Inf, ymin = -Inf, ymax = Inf, fill = "a" ), alpha = .01) + geom_segment(aes( x = start, xend = end, y = name, yend = name, col = name ), size = 1.2) + scale_color_scico(palette = "berlin", name = "Years of Data") + scale_fill_manual( values = c("a" = "red"), labels = c("a" = ""), name = "Years of interest" ) + guides( color = guide_colorbar( barwidth = unit(20, "lines"), title.position = "top", title.hjust = .5 ), fill = guide_legend(title.position = "top", title.hjust = .5, # 单独修改图例的样式,alpha设为1完全不透明 override.aes = list(fill = "red", alpha = 1)) ) + theme( panel.grid.minor = element_blank(), legend.position = "bottom", panel.background = element_rect(fill = NA), axis.text.y = element_text(size = 6), legend.title = element_text(family = "Times New Roman") )
- 如果你对绘图区域的矩形透明度没有严格要求,直接把
geom_rect的alpha参数调整到0.2左右,不需要修改其他配置,图例和绘图区域的红色就会同步正常显示。
内容的提问来源于stack exchange,提问作者Lenn
相关产品推荐
相关产品推荐

