我正在尝试通过加载具有两个日期和一个值的文件来使用“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 from a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303055/