如何在ggplot中按分组分别连接数据点而非全部连接?
ggplot分组折线错误修复方案
问题说明
当前代码生成的图表将TN、TX两个分组的点全部连在一起,无法实现按分组分别随日期连线的效果。
核心问题
group=1的设置强制所有数据归为同一组,导致所有点被连接成一条线;- Date列是字符串类型,虽当前数据顺序正确,但长期来看存在排序风险。
修复代码
library(ggplot2) library(tidyr) library(dplyr) df %>% select(Date, TN, TX) %>% pivot_longer(cols = c(TN,TX), names_to = "Tcombine", values_to = "Value") %>% # 将字符串日期转换为日期类型,确保x轴按时间顺序排列 mutate(Date = as.Date(Date, format = "%d/%m/%Y")) %>% ggplot(aes(Date, Value, group = Tcombine, shape = Tcombine, color = Tcombine)) + geom_point() + geom_line() + theme(axis.text.x = element_text(angle = 90, hjust = 1), axis.title.x = element_blank())
修复说明
- 把
group=1替换为group=Tcombine,让ggplot按Tcombine的两个类别(TN、TX)分别分组,各自绘制折线; - 添加
mutate(Date = as.Date(Date, format = "%d/%m/%Y"))将字符串日期转为标准日期类型,确保x轴严格按时间顺序展示,避免字符排序导致的逻辑错误。
内容的提问来源于stack exchange,提问作者Chouette
相关产品推荐
相关产品推荐

