2016-08-30 12 views
1

私は1000行の& 300列のExcelファイルを持っています。 私はプロットしたい(列1)vs(列2〜288);私の第1列は私のX軸であり、残りの列はY軸上にあります。 私のコードは以下の通りです。私はディスプレイを取得しません。 エラーメッセージはありません。MATPLOTLIBを使用してEXCELから複数のデータをプロットできません

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) 

ホールドオプションは、1つのグラフにまとめ7つの個々のプロットを配置します。さらに、シートデータのインポートと処理にpandasパッケージを使用することを検討する必要があります。

+0

なぜパンダをお勧めしますか?パンダはどのようにタスクを簡素化しますか?そのような情報がなければ、この勧告は全く役に立たない! – jkalden

関連する問題