R语言ggplot2使用geom_linerange时图例框不显示对应颜色问题求助
问题原因
geom_linerange() 默认的图例符号(glyph)是垂直方向的短竖线,而 ggplot2 默认图例的键(key)宽度很小,竖线在狭窄的图例区域里几乎不可见,就会出现你观察到的「图例色块不显示对应颜色」的错觉。你调用的coord_flip()让图中的 linerange 变成水平显示,但图例的 glyph 仍然保持默认的竖直形态,进一步放大了这个问题。
解决方法
在第二个映射了color=box的geom_linerange()里,指定key_glyph = "rect",让图例直接用矩形色块展示颜色即可。也可以根据喜好调整图例块的大小,让显示效果更美观。
修改后的完整代码
library(tidyverse) library(lubridate) estancias_uci %>% arrange(desc(box),desc(first_cauris)) %>% rowid_to_column("patient_id") %>% ggplot(data=., aes(x=nhc)) + geom_linerange( aes(ymin=first_cauris-hours(6),ymax=last_cauris+hours(6)), colour="grey", size=4,alpha=0.5) + # 新增key_glyph参数指定图例用矩形色块展示 geom_linerange(aes(ymin=from,ymax=to,color=box), size=2, alpha=0.9, key_glyph = "rect") + coord_flip() + xlab("") + ggtitle("UCI 2021") + theme_classic() + theme(plot.title = element_text(hjust = 0.5), axis.title.y = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank(), legend.title.align = 0.5, # 可选:调整图例色块大小,让显示更清晰 legend.key.size = unit(0.8, "cm"))
如果你更喜欢线段样式的图例,也可以把key_glyph改为"path",同时在theme中添加legend.key.width = unit(1, "cm")拉宽图例键的宽度,就能看到对应颜色的水平线段图例。
内容的提问来源于stack exchange,提问作者jajb
相关产品推荐
相关产品推荐

