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

如何修改Python折线图的x轴为按时间排序的年月显示格式

你代码的核心问题是将年月处理为了浮点数值,导致x轴显示为小数而非可读的年月格式,调整方案如下:


修改后代码

import pandas as pd
import matplotlib.pyplot as plt

def graph_s(self):
    if len(self.sheet) > 1:
        # 组合年月为datetime时间类型
        self.sheet['date'] = pd.to_datetime(self.sheet[['Year', 'Month']].assign(day=1))
        # 按日期从旧到新升序排列
        self.sheet = self.sheet.sort_values('date', ascending=True)
        # 计算月度总支出
        self.sheet['total_expense'] = self.sheet[['grocery', 'transportation', 'leisure', 'utilities', 'savings', 'bills']].sum(axis=1).astype(float)
        # 绘图
        plt.plot(self.sheet['date'], self.sheet['total_expense'])
        # 可选:旋转x轴标签避免文字重叠
        plt.xticks(rotation=45)
        plt.tight_layout()
        plt.show()
    else:
        # 可替换为中文提示:print('抱歉!数据量不足,无法生成随时间变化的支出折线图。')
        print('Sorry! There is not enough information to create a graph of you spending over time.')

核心修改说明

  • 取消原本把年月转为「年份+月份/12」浮点数值的逻辑,改为生成pandas原生datetime时间类型,matplotlib可自动识别该类型,x轴默认按时间先后排序,且直接显示可读的年月格式
  • 替换低效的iterrows遍历逻辑,用pandas向量化运算实现排序、求和,性能更高、代码更简洁
  • 新增x轴标签旋转配置,避免年月文字过长重叠

原错误运行效果参考

原错误图表1
原错误图表2


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:18:01