如何在R的ggplot2中为同图双折线设置不同颜色与线型?
给折线图添加自定义颜色与线型的解决方案
你已经完成了自定义折线颜色的设置,想要再给两条折线加上不同线型的话,只需要做两处小修改就可以实现啦:
完整可运行代码
# 加载依赖包 library(ggplot2) library(scales) # 构建你的数据框 df <- data.frame( date = c('2015-11-23','2015-11-24','2015-11-25','2015-11-23','2015-11-24','2015-11-25'), variable = c('LCNB', 'LCNB','LCNB','LCDEF','LCDEF','LCDEF'), value = c(1,2,3,3,2,1) ) # 绘制带自定义颜色和线型的折线图 ggplot(df, aes(x = as.Date(date), y = value, color = variable, linetype = variable)) + geom_line(size = 1.07) + # 自定义颜色映射 scale_color_manual(labels = c("Nb", "Def"), values = c("#E69F00", "#0072B2")) + # 自定义线型映射 scale_linetype_manual(labels = c("Nb", "Def"), values = c("solid", "dashed")) + # 可选:优化图表标签,提升可读性 labs( x = "日期", y = "数值", color = "变量类型", linetype = "变量类型" )
关键修改点解释
- 关联线型与变量:在
ggplot的aes映射中加入linetype = variable,让不同的variable类别对应不同的线型 - 手动指定线型:用
scale_linetype_manual来定义每个标签对应的线型,示例里给"Nb"用实线(solid),"Def"用虚线(dashed),你还可以换成dotted(点线)、dotdash(点虚线)等其他样式 - 优化标签(可选):通过
labs函数统一修改坐标轴和图例的标签,让图表的表意更清晰,尤其是给图例设置统一的名称,避免出现两个分开的图例
这样最终生成的图表会同时用颜色和线型来区分两条折线,哪怕是黑白打印也能清楚分辨不同的系列~
内容的提问来源于stack exchange,提问作者jester
相关产品推荐
相关产品推荐

