我有一个格式(HH:MM:SS.mmmmmm)的时间戳数组和另一个浮点数数组,每个数组对应一个timestamp数组中的值.
我可以使用Matplotlib在x轴上绘制时间和在y轴上绘制数字吗?
我试图,但不知何故,它只接受花车阵列.我怎样才能让它画出时间?我是否必须以任何方式修改格式?
在寻找我前一个问题的解决方案(显然已经解决了)时,我遇到了另一个问题,但仍未解决.我非常感谢能帮助我解决它的人!
有人认为我使用的是matplotlib 1.5.1的过时版本,但我现在更新到2.1.1以及numpy到1.14.0,这对我没有帮助,唉.
所以,再一次.我有一个CSV文件作为输入:
16,59,55,51 13.8
17,00,17,27 13.7
17,00,39,01 13.6
17,01,01,06 13.4
Run Code Online (Sandbox Code Playgroud)
我在上面运行这个python脚本:
import matplotlib.pyplot as plt
import csv
from datetime import time
x = []
y = []
with open('calibrated.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=' ')
for row in plots:
hours,minutes,seconds,milliseconds = [int(s) for s in row[0].split(",")]
x.append(time(hours,minutes,seconds,milliseconds))
y.append(float(row[1]))
plt.plot(x,y, marker='o', label='brightness')
plt.gca().invert_yaxis()
plt.xlabel('time [UT]')
plt.ylabel('brightness [mag, CR]')
plt.legend()
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我得到了这个TypeError(而解决我之前的问题的人没有它!):
Traceback (most recent call last):
File "lightcurve.py", line 16, in <module>
plt.plot(x,y, marker='o', label='brightness') …Run Code Online (Sandbox Code Playgroud) 我一直在整个Google上搜索此内容,但似乎无法完全找到所需的内容。
因此,基本上,我有两个列表:一个列表由时间戳数据组成,第二个列表由与之对应的值组成。
现在我的问题是:我的时间戳采用以下格式
['Mon Sep 1 16:40:20 2015', 'Mon Sep 1 16:45:20 2015',
'Mon Sep 1 16:50:20 2015', 'Mon Sep 1 16:55:20 2015']
Run Code Online (Sandbox Code Playgroud)
那么,哪种时间格式用于matplotlib?我试图画出这个直线,但它给了我:
ValueError: invalid literal
Run Code Online (Sandbox Code Playgroud)
我可以datetime.datetime.strptime用来转换吗?如果没有,那还有什么其他方法呢?
将转换为timestamp正确的格式后,如何绘制新的转换后的时间戳及其对应的值?
我可以使用matplotlib.pyplot.plot(time, data)还是必须使用plot_date方法进行绘制?