2017-12-18 7 views
1

matplotlib.pyplotパッケージ& Spyder IDEのPython 3を使ってタプルのリストをグラフにしようとしています。以下は、私のコードの関連するスニペットです:ここではPython、matplotlib.pyplotはラインプロットを見ることができません

import matplotlib.pyplot as plt 

def plot_test(item): 
    xdata = [] 
    ydata = [] 
    for item in list_of_epoch_total_time_tuples: 
     xdata = item[0] 
     ydata = item[3] 

    plt.plot(xdata,ydata) 
    plt.ylabel('epoch_counter') 
    plt.xlabel('square_error') 
    plt.show() 

は私の出力です:

enter image description here

私はラインプロットを参照してください傾けます。グラフは空ですか?

1)どのように私はこれを描くことができ、適切

2)どのように私はプロット範囲を提供するので、負の値が存在しないことができますか?あなたが質問に追加したコードは、私はあなたが望むものであると仮定plt.plot(xdata,ydata)ありながら

おかげ

答えて

1

まず、あなたのスクリーンのグラブからコードがplt.plot(xdata,item[3:])を持っています。問題は、すべての反復でxdataとydataを上書きしているため、単一の項目値に過ぎないということです。代わりに、次のコードを使用します。

for item in list_of_epoch_total_time_tuples: 
    xdata.append(item[0]) 
    ydata.append(item[1]) 

これは、変数のデータを上書きするのではなく、リストの末尾に値を追加します。また、plot_test()のパラメータとして項目を持っていますが、どこにも使用されていないようですが、名前項目をforループのパラメータとして使用します。このように2つの場所で同じ名前を使うのは紛らわしいので避けてください。あなただけの分を変更したい場合は

plt.xlim(xmin=some_min, xmax=some_max) 

または

plt.xlim(xmin=some_min) 

:あなたが使用できる範囲を変更するための

。そして、あなたはylimのために同様のコマンドを実行できます。

データセットがある場合は、numpyを使用して調べることもできます。 numpy配列の使用は、一般的にリストとforループを使うよりも速い

関連する問題