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

如何为Matplotlib多Y轴折线图添加月份(Month)X轴

问题:如何将1-12月份设置为图表的X轴?

我有如下包含Month、Views、CMA30字段的数据集:

Month Views   CMA30
0   11  24662   24662.000000
1   11  2420    13541.000000
2   11  11318   12800.000000
3   11  8529    11732.250000
4   10  78861   25158.000000
5   10  1281    21178.500000
6   10  22701   21396.000000
7   10  17088   20857.500000

当前使用以下代码绘制图表:

df[['Views', 'CMA30']].plot(label='Views', figsize=(5, 5))

生成的图表Y轴显示Views和CMA30,但X轴未设置为Month,请问如何将1-12的月份设置为该图表的X轴?


解决方案

有两种简洁的方法可以实现需求:

方法一:将Month设为DataFrame索引后绘图

把Month列设置为数据集的索引,绘图时X轴会自动使用索引值:

# 修改原数据集,将Month设为索引
df.set_index('Month', inplace=True)
# 绘制图表
df[['Views', 'CMA30']].plot(figsize=(5, 5))

如果不想改动原数据集,可以用临时索引的方式:

# 临时将Month设为索引,不修改原数据
df.set_index('Month')[['Views', 'CMA30']].plot(figsize=(5, 5))

方法二:绘图时手动指定X轴数据

直接在plot方法中通过x参数指定X轴为Month列,同时用y参数指定要展示的Y轴字段:

df.plot(x='Month', y=['Views', 'CMA30'], figsize=(5, 5))

补充:强制显示1-12完整月份

如果你的数据中缺少部分月份,想要X轴强制显示1到12的所有月份,可以先把Month转为分类类型并指定完整的月份范围:

import pandas as pd

# 将Month转为有序分类,指定1-12为完整类别
df['Month'] = pd.Categorical(df['Month'], categories=range(1,13), ordered=True)
# 绘图后X轴会显示1-12所有月份,缺失数据的月份会留空
df.plot(x='Month', y=['Views', 'CMA30'], figsize=(5, 5))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:10:36