如何用Plotnine将熔解后的DataFrame绘制成两条独立折线?
解决ggplot线条未分离的问题
问题分析
你当前代码的核心问题有两个:
color = "category"中加了引号,ggplot会把它当作固定字符串,而非引用DataFrame里的category列,导致所有数据用同一种颜色,且无法区分组别group = 1强制将所有数据归为同一组,两条类别数据被合并成了一条线
另外,SleepDay当前是字符串格式,建议转换为日期类型,避免x轴排序混乱。
修正后的代码
# 先转换SleepDay为日期格式(可选但推荐) long_data['SleepDay'] = pd.to_datetime(long_data['SleepDay']) # 绘制分离的线条 ggplot(long_data, aes(x=SleepDay, y=value, color=category, group=category)) +\ geom_line() +\ theme(axis_text_x=element_text(rotation=75, hjust=1))
关键修改说明
- 移除
category的引号:让ggplot正确识别数据列,自动为不同类别分配颜色 - 将
group映射到category:明确告诉ggplot按照category的不同值分组绘制线条(其实当color映射到分类列时,ggplot会自动处理分组,显式指定group更直观) - 转换日期格式:确保x轴的日期按时间顺序排列,避免字符排序导致的错位
这样就能得到两条分别对应TotalMinutesAsleep和TotalTimeInBed的独立线条了。
内容的提问来源于stack exchange,提问作者Nikshith Konnuru
相关产品推荐
相关产品推荐

