You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

时间序列分类数据绘图异常:如何连接连续状态线条?

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:05:27