前提・実現したいこと
(プログラム歴は1年未満の初心者以上、初級者以下です。)
Pythonである何十万行とあるログデータから、指定した日付、製品名で数百行のデータを取り出して極座標グラフを描画しました。
データは多重リストで格納し下記のようにし,下記のようにmatplotlibで定義した関数を描写しました。
例) data=[['a':[1,2,3,4,5,.....]], ['b':[1,2,3,4,5......]], ['c':[1,2,3,4,5.......]]]
Python
1def Graph(): 2 for d in range(len(data)): 3 ax.plot(t,data[d][1],label=data[d][0]) 4 ax.legend(loc='upper right',bbox_to_anchor=(1.3,0.9,0.5,0.100),borderaxespad=0.) 5 plt.show()
1個目は意図したとおり動作します。その後、同じスクリプト内で上記データリストの中で取り出したいデータをリストの前から(グラフで見た時は上から)何番目かを番号で指定して、そのデータだけを描写するグラフを下記のように作りました。
Python
1num=int(input()) 2ax.plot(t,data[num][1],label=data[num][0]) 3ax.legend(loc='upper right',bbox_to_anchor=(1.3,0.9,0.5,0.100),borderaxespad=0.) 4plt.show()
これを行っても何も描写されず、エラーも起きずプログラムが終了します。
同様に別の目的として同じスクリプト内にリストをリセットして別製品のグラフを描写しようとしても何もグラフが出てきません。
しかしプログラムが終了した後、変数(data)の中身を確認すると、問題なく新しい別の製品のデータに変わっていることを確認しましたが、グラフが表示されません。
同様のプログラムを折れ線グラフで行った場合には問題無く2番目以降も表示されました。
2番目以降も極座標グラフが問題無く表示されるにはどうすればよろしいでしょうか?
もし何か問題があれば教えてください。
発生している問題・エラーメッセージ
同じスクリプト内の2番目以降のグラフが表示されません。
該当のソースコード
Python
1import matplotlib.pyplot as plt 2import numpy as np 3 4t=[] 5for i in range(360): 6 t.append(i*360/200/180*np.pi) 7 8ax=plt.subplot(111,projection="polar") 9data=[['a':[1,2,3,4,5,.....]], ['b':[1,2,3,4,5......]], ['c':[1,2,3,4,5.......]]] 10 11def Graph(): 12 for d in range(len(data)): 13 ax.plot(t,data[d][1],label=data[d][0]) 14 ax.legend(loc='upper right',bbox_to_anchor=(1.3,0.9,0.5,0.100),borderaxespad=0.) 15 plt.show() 16 17Graph() 18 19print('If need few, type number from top.If not, type n.') 20while True: 21 ans=input() 22 if 0<int(ans)<=times: 23 ax.plot(t,data[int(ans)][1],label=data[int(ans)][0]) 24 ax.legend(loc='upper right',bbox_to_anchor=(1.3,0.9,0.5,0.100),borderaxespad=0.) 25 plt.show() 26 27 elif ans=='n': 28 break 29 else: 30 print('\nWrong Number!!')
試したこと
いくつかの環境で試しましたが結果は同じでした。
(環境:Spyder、Jupyter、Idleなど。Windows と Mac両方。)
補足情報(FW/ツールのバージョンなど)
・Windows 7
・Python 3.6.3
・(エディター)spyder or jupyter
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/31 02:09