分析を行っているときに、ValueErrorに遭遇しました。これを要約すると、発生したエラーを再現できる次の簡単な例になります。
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
x = np.array([dt.datetime(2012, 10, 19, 10, 0, 0),
dt.datetime(2012, 10, 19, 10, 0, 1),
dt.datetime(2012, 10, 19, 10, 0, 2),
dt.datetime(2012, 10, 19, 10, 0, 3)])
y = np.array([1, 3, 4, 2])
この単純なxおよびy配列をプロットしようとすると、次の問題は発生しません。
fig, ax = plt.subplots()
ax.plot(x, y)
また
fig, (ax1, ax2) = plt.subplots(nrows=2)
ax1.plot(x, y)
しかし、を追加するsharex=True
と、エラーが発生します。
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
ax1.plot(x, y)
エラーメッセージ:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 2445, in home
self._update_view()
File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 2818, in _update_view
self.draw()
File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 2796, in draw
loc.refresh()
File "C:\Python27\lib\site-packages\matplotlib\dates.py", line 758, in refresh
dmin, dmax = self.viewlim_to_dt()
File "C:\Python27\lib\site-packages\matplotlib\dates.py", line 530, in viewlim_to_dt
return num2date(vmin, self.tz), num2date(vmax, self.tz)
File "C:\Python27\lib\site-packages\matplotlib\dates.py", line 289, in num2date
if not cbook.iterable(x): return _from_ordinalf(x, tz)
File "C:\Python27\lib\site-packages\matplotlib\dates.py", line 203, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix)
ValueError: ordinal must be >= 1
matplotlib(https://github.com/matplotlib/matplotlib/issues/162twinx
)で、同じエラーが発生する日付付きの使用に関する問題を見つけました。同じバグですか?そして、それは長い間知られているバグのようですが、まだ解決されていません。