如何在ggplot2中无分组无因子按日期绘制多变量并添加图例?
在ggplot2中无需分组/因子实现多变量日期绘图并添加图例
完全可行,不用把数据转换为长格式(即无需分组或因子),通过多次调用geom_line()并手动指定图例映射就能实现。下面是具体示例:
示例代码
首先构造模拟数据:
library(ggplot2) # 创建宽格式数据(日期+多个变量) set.seed(123) df <- data.frame( date = seq(as.Date("2023-01-01"), as.Date("2023-01-31"), by = "day"), temp_high = rnorm(31, 20, 3), temp_low = rnorm(31, 10, 2) )
然后绘图,无需分组/因子,直接为每个变量单独添加线条并指定图例标签:
ggplot(df, aes(x = date)) + # 第一条线,在aes中指定color作为图例标签 geom_line(aes(y = temp_high, color = "最高气温"), linewidth = 1) + # 第二条线,同样在aes中指定color geom_line(aes(y = temp_low, color = "最低气温"), linewidth = 1, linetype = "dashed") + # 手动设置颜色和图例标题 scale_color_manual( name = "气温类型", values = c("最高气温" = "red", "最低气温" = "blue") ) + labs(x = "日期", y = "气温(℃)") + theme_minimal()
原理说明
- 把
color参数放在aes()内部时,ggplot会将其视为一个分类变量,自动生成对应的图例项 - 通过
scale_color_manual()可以自定义图例的标题、标签对应的颜色,完全不需要依赖数据中的分组因子或长格式转换
内容的提问来源于stack exchange,提问作者wyoronk
相关产品推荐
相关产品推荐

