首页 > 解决方案 > 如何在 python 中更改折线图上的 x 轴?

问题描述

目前我有这个代码:

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

标签: pythonspyder

解决方案


您可以从您的and中创建一个date对象row['Month']row['Year']

from datetime import date

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

这是绘制时的示例(另请参见此处

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()

样本图


推荐阅读