R ggplot2绘制多美学映射FTSW趋势图及图例调整方法
FTSW变化趋势图代码修正
原代码问题
- 美学映射位置错误:
colour、shape、linetype参数被写在aes()函数外部,ggplot无法识别变量到图形属性的映射,导致颜色、点型、线型均未按规则区分,图例显示异常 - 连线分组缺失:未指定连线分组规则,
geom_line()无法按照「同一Bloc+同一traitement」的观测序列连线,会出现线条错乱 - 图例未合并:traitement同时对应点形状、线型两个属性,默认生成两个独立图例,不符合目标样式要求
修正后代码
library(tidyverse) df %>% mutate(Bloc = as.factor(Bloc)) %>% ggplot(aes( x = Date_obs, y = FTSW_apres_arros, colour = Bloc, shape = traitement, linetype = traitement, group = interaction(Bloc, traitement) )) + geom_point(size = 2) + geom_line(linewidth = 0.8) + scale_shape_manual(name = "traitement", values = c(16, 17)) + scale_linetype_manual(name = "traitement", values = c("solid", "dashed")) + labs(y = "FTSW") + theme( legend.position = "bottom", axis.text.x = element_text(angle = 90, hjust = 1) )
关键调整说明
- 将
Bloc转为因子类型,避免被识别为连续值生成渐变色图例,匹配分类配色的要求 - 所有美学映射统一放入
aes()内部,确保变量与图形属性正确绑定 - 通过
group = interaction(Bloc, traitement)指定分组规则,保证同一区块、同一处理的观测点正确连成折线 - 为点形状、线型两个标尺设置相同的图例名称,让两类映射自动合并为同一个traitement图例,最终图例样式为:Bloc图例仅展示不同颜色标识,traitement图例同时展示对应点型和线型,与目标效果一致
- 可自行调整
scale_*_manual中values的参数,修改点形状、线型、配色的具体样式
内容的提问来源于stack exchange,提问作者Chouette
相关产品推荐
相关产品推荐

