2016-08-30 49 views
1

我有一個Excel文件,1000行& 300列。 我想繪製(第1列)vs(第2列到第288列);我的第一列是我的X軸,其餘的列在Y軸上。 我的代碼如下;我沒有顯示。 這裏沒有錯誤信息。無法使用MATPLOTLIB從EXCEL PLOT多個數據

from openpyxl import load_workbook 
import numpy as np 
import matplotlib.pyplot as plt 

wb = load_workbook('CombinedData1.xlsx') 
sheet_1 = wb.get_sheet_by_name('CombinedData') 

x = np.zeros(sheet_1.max_row) 
y = np.zeros(sheet_1.max_row) 
a = np.zeros(sheet_1.max_column) 
b = np.zeros(sheet_1.max_column) 

print (sheet_1.max_row) 
print (sheet_1.max_column) 

for i in range(0, sheet_1.max_row): 
    for j in range(1, 7): 
     x[i] = sheet_1.cell(row=i + 1, column=j).value 
     y[j] = sheet_1.cell(row=i + 1, column=j).value 
     # z[i] = sheet_1.cell(row=i + 1, column=3).value 
     print x[i] 
     # print y[i] 
     plt.plot(x[i], y[i], 'bo-', label='Values') 

plt.grid(True) 
plt.xlim(0,100) 
plt.ylim(0,10) 
plt.show() 
+0

什麼是錯誤消息,如果有任何? – hsn

+0

這裏沒有錯誤信息。 我正在遵循的過程是錯誤的,我猜。 我想繪製(列1)vs(列2到288)。但我無法找出一個辦法。 – Aditya

+0

在for循環之後/之外嘗試使用'plt.plot(x,y,'bo-',label ='Values')' – James

回答

0

我會考慮使用pandas

import pandas 
df = pandas.read_excel('CombinedData1.xlsx', sheetname='CombinedData', header=None) 
df.plot(x=0) 

plt.plot(df[0], df[1]) 
0

嘗試類似如下的嵌套循環:

 
for j in range(1, 7): 
     for i in range(0, sheet_1.max_row): 
       x[i] = sheet_1.cell(row=i + 1, column=j).value 
       y[i] = sheet_1.cell(row=i + 1, column=j).value 
       #z[i] = sheet_1.cell(row=i + 1, column=3).value 
       print x[i] 
       #print y[i] 
     plt.plot(x, y, label='Values %d' % j, hold=1) 

的保持選項將會把7點個人一起繪製成一個單一的情節。此外,您應該考慮使用熊貓軟件包導入和處理工作表數據。

+0

你爲什麼推薦熊貓?熊貓如何簡化任務?沒有這些信息,這個建議就沒用了! – jkalden