2017-06-21 39 views
-1

我想绘制使用matplotlib的python数据,但由于某些原因,它不允许我绘制X轴上的日期和时间数据。它抱怨说它不能将字符串转换为浮点数。 Excel数据如下所示:Python matplotlib绘制excel中的自定义数据

06/11/17 04:13:02 PM 2.1 
06/11/17 04:14:32 PM 3.9 
06/11/17 04:14:54 PM 2 
06/11/17 04:15:08 PM 3.2 
06/11/17 04:15:25 PM 1.7 

我要的是显示对Y轴的X轴和其他值的日期&时间(不是当前的时间)的图表。我有excel部分工作正常,但绘图图是我遇到的问题。

+0

你是如何得到python的数据集?你在用熊猫吗? – anon

+0

@anon使用openpyxl但那不是问题。如果我创建两个短名单如下: v = [2,3.9,2,3.2,1.7] t = [“06/11/17 04:13:02 PM”,blah bla] – squid22

+0

您将需要将该字符串转换为日期时间对象 – anon

回答

0

我明白了。事实证明,openpyxl已经将日期和时间从excel转换为datetime()值。下面是我的代码,它的工作完美无瑕。

import openpyxl 
import sys 
import matplotlib.pyplot as plt 

v = [] 
d = [] 

file = sys.argv[1] 

wb = openpyxl.load_workbook(file) 
sheet = wb.get_sheet_by_name('Sheet1') 

for row in range(2,sheet.max_row): 
    for stuff in "B": 
     valuesData = "{}{}".format("B",row) 
     v.append(sheet[valuesData].value) 

for row in range(2,sheet.max_row): 
    for stuff in "A": 
     timeData = "{}{}".format("A",row) 
     d.append(sheet[timeData].value) 

plt.xlabel("Time") 
plt.ylabel("Values") 
plt.plot(d,v) 
plt.show() 

假设你有一个Excel工作表的数据如下:

A       B 
1 06/11/17 04:13:02 PM 2.1 
2 06/11/17 04:14:32 PM 3.9 
3 06/11/17 04:14:54 PM 2 
4 06/11/17 04:15:08 PM 3.2 
5 06/11/17 04:15:25 PM 1.7 

我知道它并不完美,但我的作品。我相信它可以更有效地完成。