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.
私は 'end'がstart''未満ですが、 'delta'が正であることがわかります。 'drange'は' range'のように動作します。 'start'で始まり、' delta'で 'end'に達するまで変更します。私はあなたがこのステートメントで '-delta'を使うべきだと思っています。しかし、 'y_delta'は定義されていません。 –
@BillBellおそらくあなたはあなたのコメントを回答に変えたいと思うかもしれません。それは受け入れられます。質問が未解決のまま永遠に残ることはありません。エラーの原因と考えられる解決策を見つけたので、答えに必要なものすべてが用意されています。さらに、実行可能なサンプルを提供したい場合は、 'y_data = range(len(dates))'を使うだけです。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest:ありがとう、やったよ。 –