geom_line与geom_point调用同一颜色向量时颜色匹配问题咨询
问题描述
使用ggplot2绘图时,数据框包含自定义颜色列FarbDots,geom_point能按预期应用该列的颜色,但geom_line的颜色显示混乱。原绘图代码如下:
b + geom_line(colour=Data_Biol_long$FarbDots)+ geom_point(colour=Data_Biol_long$FarbDots)+ scale_y_log10()+ facet_grid(Analysis~., scale='free')
解决方法
核心修改:使用ggplot映射语法+颜色恒等刻度
不要直接给colour参数传入外部数据向量,改用aes()将颜色映射到数据列,再通过scale_colour_identity()让ggplot直接识别列中的自定义颜色值:
b + geom_line(aes(colour = FarbDots)) + geom_point(aes(colour = FarbDots)) + scale_colour_identity() + # 关键:直接使用列内的颜色值 scale_y_log10()+ facet_grid(Analysis~., scale='free')
原因说明
- 直接赋值
colour=Data_Biol_long$FarbDots时,geom_line默认会把整个数据视为一个分组,导致颜色向量被错误循环或分配;而geom_point是逐点对应颜色,所以显示正常。 - 用
aes(colour = FarbDots)后,颜色会和每一行数据绑定,scale_colour_identity()告诉ggplot不要对颜色列做分类映射,直接使用列中的原始颜色值(比如十六进制色码、颜色名称),这样点和线的颜色就能完全匹配。
内容的提问来源于stack exchange,提问作者Becci
相关产品推荐
相关产品推荐

