ggplot折线与平滑曲线颜色及形状设置问题求助
解决方案
你的代码无法按分组设置颜色和形状,核心问题是未将color、shape美学映射到分组字段,且误用了填充色相关的刻度函数,以下是修正方案:
修正后的代码
data3 |> ggplot(aes(x = age, group = factor(healthy), color = factor(healthy), shape = factor(healthy))) + geom_smooth(aes(y = col1)) + geom_point(aes(y = col21)) + scale_color_lancet() + scale_color_discrete(labels = c("Healthy", "Sick", "SCI")) + scale_shape_discrete(labels = c("Healthy", "Sick", "SCI")) + labs(color = "健康状态", shape = "健康状态") # 可选:自定义图例标题
关键修改说明
- 在全局
aes中添加color = factor(healthy)和shape = factor(healthy),让平滑曲线和点都按分组区分颜色与形状 - 将
scale_fill_lancet()替换为scale_color_lancet():geom_smooth的线条颜色、geom_point的点颜色都使用color美学,而非填充色fill - 用
scale_color_discrete()和scale_shape_discrete()统一设置图例标签,保证两个图例的分组名称一致 - 若需要点的填充色也区分(比如使用带填充的形状如
shape=21),可在全局aes中额外添加fill = factor(healthy),并保留scale_fill_lancet()
内容的提问来源于stack exchange,提问作者user3483060
相关产品推荐
相关产品推荐

