我正在编写一个分析历史数据的程序,我试图绘制所述数据以显示关系。我已经达到了一点,我不确定自己哪里出错了。
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轴均匀地分布数据,以便日期不重叠。这是我现在拥有的图表 -
提前致谢
答案 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
参数