使用matplotlib绘制图形

时间:2017-07-21 12:02:03

标签: python matplotlib

我有一个文本文件,看起来如下:

14:49:15
0.00152897834778
14:49:22
0.00193500518799
14:49:29
0.00154614448547
14:49:36
0.0024299621582
14:49:43
0.00161910057068
14:49:50
0.00165987014771
14:49:57
0.00150108337402

我想使用plot()方法创建一个图形,其中我希望文本文件中的每个奇数行都是x轴上的坐标,而每个非奇数行都是y轴坐标# 39; s各自x(非奇数之前的行) 在这个特殊情况下,14:49:15将是第一个x和0.00152897834778第一个y

2 个答案:

答案 0 :(得分:1)

您可以将日期时间转换为数字并绘制它们

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import datetime

string = """14:49:15
0.00152897834778
14:49:22
0.00193500518799
14:49:29
0.00154614448547
14:49:36
0.0024299621582
14:49:43
0.00161910057068
14:49:50
0.00165987014771"""

x = string.split('\n')[::2]
x = matplotlib.dates.date2num([datetime.datetime.strptime(xi, '%H:%M:%S') for xi in x])
y = np.array(string.split('\n')[1::2], dtype=float)

plt.plot(x, y)

答案 1 :(得分:0)

您可以按换行符.split("\n")拆分输入,并将每秒转换为日期时间对象。然后使用plt.plot_date()给出一个显示时间的图表。

import datetime
import numpy as np
import matplotlib.pyplot as plt

u = u"""14:49:15
0.00152897834778
14:49:22
0.00193500518799
14:49:29
0.00154614448547
14:49:36
0.0024299621582
14:49:43
0.00161910057068
14:49:50
0.00165987014771"""

# split the string by linebreaks
l = u.split("\n")
# take every second substring and convert it to datetime 
x = [datetime.datetime.strptime(i, "%H:%M:%S") for i in l[::2] ]
# take every second substring starting at the second one
y = l[1::2]

plt.plot_date(x,y)

plt.show()

enter image description here