我正在尝试通过加载带有两个日期和一个值的文件来使用“ plot_date”制作一个简单的XY图,但是还没有成功。想法是让第0列和第1列表示“ time1”,第2列和第3列表示为“ time2”,第4列表示为“ val”。

数据输入数据如下所示:

2017-04-08 16:54:37 2017-04-08 16:55:08 1
2017-04-08 16:58:28 2017-04-08 16:58:33 1
2017-04-08 17:02:18 2017-04-08 17:02:24 1




import matplotlib.pyplot as plt
from matplotlib.dates import strpdate2num
import numpy as np
import matplotlib.colors
import matplotlib.cm
from matplotlib.dates import date2num, DateFormatter
import datetime as dt

time1,time2,val = np.loadtxt(inputfile, usecols=(0,1,2,3,4), unpack=True, converters = {0,1: strpdate2num("%Y-%m-%d %H:%M:%S")})


在这里我得到一个错误:

>>> time1,time2,val = np.loadtxt(inputfile, usecols=(0,1,2,3,4), unpack=True, converters = {0,1: strpdate2num("%Y-%m-%d %H:%M:%S")})
File "<stdin>", line 1
time1,time2,val = np.loadtxt(inputfile, usecols=(0,1,2,3,4), unpack=True, converters = {0,1: strpdate2num("%Y-%m-%d %H:%M:%S")})
                                                                                           ^
SyntaxError: invalid syntax


对我可能做错的任何想法?关于如何纠正的建议?

除其他外,我希望从time1中减去time2并获得以秒为单位的差异。这可能吗?

最后,我想按以下方式绘制变量:

fig, ax = plt.subplots()
ax.plot_date(time1, val, 'b-', color='b')
ax.plot_date(time2, val, 'b-', color='g')

最佳答案

您必须分别转换每个列,然后将其合并:

import matplotlib.pyplot as plt
from matplotlib.dates import strpdate2num
import numpy as np
import matplotlib.colors
import matplotlib.cm
from matplotlib.dates import date2num, DateFormatter
import datetime as dt

time1,date1,time2,date2,val = np.loadtxt(inputfile, usecols=(0,1,2,3,4),  unpack=True,
 converters = {0: strpdate2num("%Y-%m-%d"), 1: strpdate2num("%H:%M:%S"),
 2: strpdate2num("%Y-%m-%d"), 3: strpdate2num("%H:%M:%S")})

time1 += date1
time2 += date2

fig, ax = plt.subplots()
ax.plot_date(time1, val, 'b-', color='b')
ax.plot_date(time2, val, 'b-', color='g')
fig.autofmt_xdate()
plt.show()

关于python - 从文件加载并绘制%Y-%m-%d%H:%M:%S,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43303055/

10-11 05:58