【问题标题】:How do I change the x-axis on my line chart in python?如何在 python 中更改折线图上的 x 轴?
【发布时间】:2021-11-28 03:08:21
【问题描述】:

目前我有这个代码:

def graph_s(self):
        ex_list = list()
        time = list()
        if(len(self.sheet) > 1):
            for index, row in self.sheet.iterrows():
                time.append(row['Month']/12 + row['Year'])
                ex_list.append(float(row['grocery']) + float(row['transportation']) + float(row['leisure']) + float(row['utilities']) + float(row['savings']) + float(row['bills']))
            z = sorted(zip(time,ex_list))
            x=[i[0] for i in z]
            y=[i[1] for i in z]
            plt.plot(x, y)
            plt.show()
        else:
            print('Sorry! There is not enough information to create a graph of you spending over time.')

但是,x 轴不是我想要的。我想在 x 轴上显示月份和年份,从最旧到新。当我运行代码时,它显示了下图。

[1 [2

【问题讨论】:

    标签: python spyder


    【解决方案1】:

    您可以通过您的 row['Month'] 和 row['Year'] 创建一个 date 对象

    from datetime import date
    
    (...)
    ts = date(row['Year'], row['Month'], 1)  # last value is the day
    time.append(ts)
    (...)
    

    以下是绘制时的示例(另请参阅here)

    from datetime import date
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    y = list(range(6))
    x = [date(2021,i,1) for i range(6)]
    
    fig, ax = plt.subplots()
    ax.plot(x,y)
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
    plt.show()
    

    【讨论】:

    • 我试图用你建议的答案来改变我的代码 (...) ts = date(row['Year'], row['Month'], 1) # 最后一个值是一天时间.append(ts) (...) 但现在它向我显示 ts = date(row['Year'], row['Month'], 1) # 最后一个值是日期 TypeError: integer argument expected, got float
    • 据我从您的表格截图中可以看出,它们是整数。因此,只需将它们转换为 int 即可解决此问题:ts = date(int(row['Year']), int(row['Month']), 1)
    • 谢谢!!!我的代码现在遇到的另一个问题是这部分代码: x=[i[0] for i in z] y=[i[1] for i in z] plt.plot(x, y)当折线图出来时x轴指定,2021-10-01,使得x轴非常混乱。我是否可以删除 -01 并将其保留为 2021-10
    • @user21 我用日期格式的代码更新了我的示例。如果有帮助,请接受并支持我的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2018-12-11
    • 2021-12-12
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多