我需要绘制日期和时间(x轴)与文本文件中的值(y轴)。我在这个网站上发现了一个代码,它代表了我需要的代码, 但问题是它读取了一个文本文件,其中第三列用逗号分隔。 在可能的情况下,我只有空间,而且我不知道如何将第三列与前一个
分开代码是这样的:
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
x = []
y = []
t = []
fig = plt.figure()
readFile = open('1.txt', 'r')
sepFile = readFile.read().split('\n')
readFile.close()
for idx, plotPair in enumerate(sepFile):
if plotPair in '. ':
continue
if idx > 1:
xAndY = plotPair.split(',')
time_string = xAndY[0]
time_string1 = datetime.strptime(time_string, '%d/%m/%Y %H:%M')
t.append(time_string1)
y.append(float(xAndY[1]))
ax1 = fig.add_subplot(1, 1, 1, axisbg='white')
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M'))
ax1.plot(t, y, 'r-', linewidth=3.3)
plt.title('Subordinate prediction')
plt.xlabel('DATA/TIME')
plt.ylabel('Height (Meters relative to MLLW)')
fig.autofmt_xdate(rotation=45)
fig.tight_layout()
fig.show()
我的文本文件是:
01/12/2014 4:36 1.6
01/12/2014 10:20 0.45
01/12/2014 16:50 2
01/12/2014 23:28 0.21
02/12/2014 5:52 1.54
02/12/2014 11:11 0.48
02/12/2014 17:40 2.14
03/12/2014 0:28 0.04
03/12/2014 6:54 1.51
03/12/2014 11:58 0.48
03/12/2014 18:26 2.25
04/12/2014 1:20 -0.09
04/12/2014 7:46 1.48
04/12/2014 12:43 0.46
04/12/2014 19:09 2.32
05/12/2014 2:08 -0.17
05/12/2014 8:32 1.44
05/12/2014 13:27 0.44
它不起作用,请有人帮助我吗?
答案 0 :(得分:0)
我想说最可能的方法是:
...
xAndY = plotPair.split('\t')
time_string = xAndY[0]+" "+xAndY[1]
time_string1 = datetime.strptime(time_string, '%d/%m/%Y %H:%M')
t.append(time_string1)
y.append(float(xAndY[2]))
...
这将通过文件中的明显制表符(按发布内容)进行拆分,然后从包含3个值的结果数组中获取前两个部分,并将它们组合为日期时间,最后一部分是y值
你忘记了缩进。我给你的所有代码应该在if语句下对齐,如下所示:
if idx > 1:
xAndY = plotPair.split('\t')
time_string = xAndY[0]+" "+xAndY[1]
time_string1 = datetime.strptime(time_string, '%d/%m/%Y %H:%M')
t.append(time_string1)
y.append(float(xAndY[2]))
不要忘记在python中,空白区很重要。