绘制Python列表 - 整数和日期时间

时间:2018-02-28 18:09:15

标签: python datetime graph

我正在编写一个分析历史数据的程序,我试图绘制所述数据以显示关系。我已经达到了一点,我不确定自己哪里出错了。

def somefunction():
    with open(path + '/120410_69.csv', 'r') as BCRWC:
    readCSV = csv.reader(BCRWC, delimiter=',')

    BCRWCdata = []
    BCRWCresults = []
    BCRWCdatetimes = []

    for row in readCSV:
        BCRWCdata.append(row)

    BCRWCdata.pop(0) #Removing headers from data

    result = float(row[2]) #Integers
    datetime = row[8] #Strings in format 13/02/2018  00:00:00

    BCRWCresults.append(result)
    BCRWCdatetimes.append(datetime)

fig = plt.figure()
plt.plot(x=BCRWCdatetimes, y=BCRWCresults)
plt.xlabel("Date")
plt.ylabel("Raw Water Colour Result")
plt.ylim(15, 70)
plt.show()

return BCRWCresults
return BCRWCdatetimes

我知道我需要将长字符串列表(BCRWCdatetimes)转换为日期时间对象(我认为)但我无法弄清楚如何,我还需要沿x轴均匀地分布数据,以便日期不重叠。这是我现在拥有的图表 -

enter image description here

提前致谢

1 个答案:

答案 0 :(得分:0)

使用您发布的格式制作一个补充列表,我可以按照您希望的方式使用它进行绘图:

import matplotlib.pyplot as plt
import datetime
# Make up some data
BCRWCresults = [16.12, 43.2, 62.1, 15.4, 18.7]
BCRWCdatetimes = ['13/02/2008 08:20', '13/03/2008 08:20', '13/04/2008 08:20', '13/05/2008 08:20', '13/02/2008 12:20']

# Convert to datetime
BCRWCdatetimes = [datetime.datetime.strptime(i, '%d/%m/%Y %H:%M') for i in BCRWCdatetimes]

# for the x-axis labels, get just the month and year of your datetimes:
date_months = [str(i.month) + '-' + str(i.year) for i in dates]

fig = plt.figure()
plt.plot_date(x=dates, y=BCRWCresults)
plt.xlabel("Date")
plt.xticks(dates, date_months, rotation=90)
plt.ylabel("Raw Water Colour Result")
plt.ylim(15, 70)
plt.tight_layout()
plt.show()

根据您想要在x轴上显示的日期数量,您可以使用plt.xticks参数