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

如何将时间序列中各工作日分别绘制成独立折线图?

实现按工作日分组绘制独立折线图的简便方法

当然有很简便的方法实现这个需求!我来一步步带你搞定——既能把每个工作日的数据点单独连成折线,还能给周日和其他工作日设置不同的颜色。

完整实现代码

先把补全并优化后的代码放出来,后面再拆解说明:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 生成时间序列数据
ts = pd.DataFrame(
    pd.Series(np.random.randn(100), index=pd.date_range('1/1/2000', periods=100))
)
ts.columns = ['quantity']
# 注意:新版本pandas中weekday_name已被弃用,改用day_name()
ts['weekday'] = ts.index.day_name()

# 定义颜色规则:周日红色,其他工作日黄色
color_map = {'Sunday': 'red'}
# 给其他工作日默认设置黄色
other_weekdays = [day for day in ts['weekday'].unique() if day != 'Sunday']
for day in other_weekdays:
    color_map[day] = 'gold'

# 创建画布
plt.figure(figsize=(12, 6))

# 按工作日分组,逐个绘制折线
for weekday, group in ts.groupby('weekday'):
    # 绘制折线,同时标记数据点
    plt.plot(group.index, group['quantity'], 
             color=color_map[weekday], 
             marker='o', 
             label=weekday)

# 添加图表元素
plt.title('Daily Quantity by Weekday (Line Connections)')
plt.xlabel('Date')
plt.ylabel('Quantity')
plt.legend()
plt.grid(alpha=0.3)
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()

关键步骤说明

  • 数据预处理:用index.day_name()获取日期对应的星期名称(如果是旧版pandas可以换回weekday_name),给每条数据打上工作日标签。
  • 颜色映射:先给周日单独指定红色,再把剩下的工作日统一设为黄色,确保颜色规则符合你的需求。
  • 分组绘制:通过groupby('weekday')把数据按工作日拆分成独立分组,然后遍历每个分组,用plt.plot()绘制折线——这样同工作日的所有数据点就会被自动连接起来,每个工作日的折线颜色也会遵循我们定义的规则。
  • 细节优化:加上标记点(marker='o')让数据点更清晰,添加图例、网格和旋转的日期标签,提升图表可读性。

这样运行代码后,你就能看到每个工作日的折线独立展示,周日的折线和点是红色,其他工作日是黄色,完全符合你的要求~

内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:31:28