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

基于离散年份区分使用matplotlib绘制多组季节性数据折线图

Matplotlib 实现多年份季节性折线图完整方案
import pandas as pd
import matplotlib.pyplot as plt

# --------------------------
# 1. 加载/构造数据(你可以替换为你自己的df读取逻辑)
# --------------------------
data = [
    [5, 2017, "10/29"],
    [4, 2016, "10/30"],
    [3, 2018, "10/31"],
    [5, 2019, "10/31"],
    [10, 2017, "10/31"]
]
df = pd.DataFrame(data, columns=["Total", "Year", "Day"])

# --------------------------
# 2. 处理日期排序,保证X轴按时间顺序排列
# --------------------------
# 临时生成排序用的键,忽略年份只看月日,解决字符串日期排序乱序问题
df["sort_key"] = pd.to_datetime(df["Day"], format="%m/%d")
df = df.sort_values("sort_key").reset_index(drop=True)

# --------------------------
# 3. 按年份分组绘制折线
# --------------------------
plt.figure(figsize=(10, 6))
for year, group in df.groupby("Year"):
    plt.plot(group["Day"], group["Total"], marker="o", label=str(year))

# --------------------------
# 4. 优化图表显示
# --------------------------
plt.xlabel("日期(月/日)")
plt.ylabel("Total数值")
plt.title("多年份季节性数据对比")
plt.legend(title="年份")
# X轴标签旋转避免重叠
plt.xticks(rotation=30)
# 自动调整布局避免标签被截断
plt.tight_layout()
plt.show()

常见问题优化

  • 若存在日期缺失导致折线断裂:可先通过pivot补全缺失值,示例代码如下:
    # 补全所有日期和年份的组合,缺失的Total默认填充为0
    df_full = df.pivot(index="Day", columns="Year", values="Total").fillna(0).stack().reset_index(name="Total")
    
  • 若X轴日期过多显示拥挤:可调整plt.xticks(rotation=45)的旋转角度,或通过plt.xticks(ticks=range(0, len(df["Day"].unique()), 2))设置间隔展示日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:04