时间序列分类数据绘图异常:如何连接连续状态线条?
解决ggplot离散y轴折线图不连续的问题
问题原因
你的chargestatus_1123是离散分类变量(MPPT/ABSORB等),geom_line默认会将相同y值的点归为同一分组,不同y值的点之间不会连线,导致出现多条独立线条的情况。
修改方案
在geom_line的aes参数中添加group=1,强制所有数据点属于同一分组,这样线条就会严格按照x轴的时间顺序连续连接所有点。
修改后的完整代码
charge_status <- read.csv("charge_status.csv") # 先确保数据按时间排序(可选但建议) charge_status <- charge_status[order(as.POSIXct(charge_status$hrsaftersunrise_1123, format="%H:%M")), ] p1 <- ggplot(data=charge_status) + # 关键修改:在aes中加入group=1 geom_line(aes(x=as.POSIXct(hrsaftersunrise_1123, format="%H:%M"), y=chargestatus_1123, colour="Nov-23", group=1), # 新增分组参数 linewidth=1.5) + geom_point(aes(x=as.POSIXct(hrsaftersunrise_1123, format="%H:%M"), y=chargestatus_1123), size=5) + scale_y_discrete(limits = c("MPPT","ABSORB","FLOAT","NIGHT"), labels=c("MPPT","ABSORB","FLOAT","NIGHT")) p1 + plot_layout(guides="collect") & theme_fivethirtyeight() & labs(color = "Date") & scale_colour_manual(labels =c("Nov-23"), breaks =c("Nov-23"), values=c("orange")) & theme(plot.title = element_text(family="sans",face = "bold", size = rel(1.2), hjust = 0.0)) & theme(axis.title = element_text(size=12, face="bold")) & guides(color = guide_legend(override.aes = list(linewidth=7)))
额外说明
- 建议先对数据按时间排序,避免因原始数据顺序混乱导致线条连接逻辑错误。
group=1是通用的强制分组方式,只要所有点需要连在一起,就可以用这个参数覆盖默认的分组规则。
内容的提问来源于stack exchange,提问作者geeb.24
相关产品推荐
相关产品推荐

