2017-08-26 4 views
0

最終的に設定範囲内にプロットするdatetimeオブジェクトのリストがあります。しかし、私がdrangeを使用してこの範囲を定義すると、エラーが発生する"ValueError:サンプル数-23は、負でなければなりません。drangeを使用してdatetimeオブジェクトのリストをmatplotlibにプロットすると、エラーが発生する

私はここで間違っていますか?私のデータに負の値がないことを確かめてください。

私はPython 3.6を使用しています。私はend未満startしかしdeltaが陽性であることがわかり

import datetime 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

date = [datetime.datetime(2017, 8, 24, 0, 0), datetime.datetime(2017, 8, 23, 0, 0), datetime.datetime(2017, 8, 22, 0, 0), datetime.datetime(2017, 8, 21, 0, 0), datetime.datetime(2017, 8, 18, 0, 0), datetime.datetime(2017, 8, 17, 0, 0), datetime.datetime(2017, 8, 16, 0, 0), datetime.datetime(2017, 8, 15, 0, 0), datetime.datetime(2017, 8, 14, 0, 0), datetime.datetime(2017, 8, 11, 0, 0), datetime.datetime(2017, 8, 10, 0, 0), datetime.datetime(2017, 8, 9, 0, 0), datetime.datetime(2017, 8, 8, 0, 0), datetime.datetime(2017, 8, 7, 0, 0), datetime.datetime(2017, 8, 4, 0, 0), datetime.datetime(2017, 8, 3, 0, 0), datetime.datetime(2017, 8, 2, 0, 0), datetime.datetime(2017, 8, 1, 0, 0)] 

start = date[0] #is a datetime.datetime object according to type 
end = date[-1] #is a datetime.datetime object according to type 
delta = datetime.timedelta(days=5) 
dates = mdates.drange(start, end, delta) 
print(dates) 
plt.plot(dates, y_data) 


# raise ValueError("Number of samples, %s, must be non-negative." % num) 

# ValueError: Number of samples, -23, must be non-negative. 
+2

私は 'end'がstart''未満ですが、 'delta'が正であることがわかります。 'drange'は' range'のように動作します。 'start'で始まり、' delta'で 'end'に達するまで変更します。私はあなたがこのステートメントで '-delta'を使うべきだと思っています。しかし、 'y_delta'は定義されていません。 –

+0

@BillBellおそらくあなたはあなたのコメントを回答に変えたいと思うかもしれません。それは受け入れられます。質問が未解決のまま永遠に残ることはありません。エラーの原因と考えられる解決策を見つけたので、答えに必要なものすべてが用意されています。さらに、実行可能なサンプルを提供したい場合は、 'y_data = range(len(dates))'を使うだけです。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest:ありがとう、やったよ。 –

答えて

1

は、ここに私のコードです。 drangerangeのように動作します。 startで始まり、deltaendに達するまで変更します。私はあなたがこのステートメントで-deltaを使用するべきであると思う。コメントにImportanceOfBeingErnestによって示唆されるように

、あなたが使用してy_dataを定義することができます:

y_data = range(len(dates))