首页 > 解决方案 > 用 Matplotlib 和 Pandas 绘制日期

问题描述

我正在尝试根据 X 轴上的日期绘制 Y 轴上的销售数量。我似乎无法找到一种方法来做 X 轴上的日期。如果我将日期更改为浮点数,我可以绘制它,但我仍然无法找到绘制日期格式的方法。

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('book1.csv','r') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    for row in plots:
        x.append(float(row[0]))
        y.append(float(row[1]))

plt.plot(x,y, label='Loaded from file!')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\nCheck it out')
plt.legend()
plt.show()

我的 csv 看起来像:

1/1/2019,7980.185714
2/1/2019,9478.297619
3/1/2019,9282.166667
4/1/2019,6900.833333
5/1/2019,5563.716667

如果我将日期更改为浮点格式,我会得到以下图表: 在此处输入图像描述

标签: pythonpandasmatplotlibplot

解决方案


您需要将类型更改x为 datetime :

import matplotlib.pyplot as plt
import csv
import datetime as dt

x = []
y = []
with open('book1.csv','r') as csvfile:
  plots = csv.reader(csvfile, delimiter=',')
  for row in plots:
      x.append(dt.datetime.strptime(row[0],'%m/%d/%Y').date())
      y.append(float(row[1]))
plt.plot(x,y, label='Loaded from file!')
plt.xlabel('x')
plt.xticks(x, x, rotation=90)
plt.ylabel('y')
plt.title('Interesting Graph\nCheck it out')
plt.legend()
plt.show()

推荐阅读