我有一个具有以下架构的 Pandas 数据框:
yyyy_mm_dd datetime64[ns]
avg_score float64
avg_response float64
se_score float64
se_response float64
dtype: object
我尝试在 Jupyter 笔记本中使用 Matplotlib 绘制它:
fig = plt.figure(figsize=(10,6))
ax = fig.gca()
ax.errorbar(daily_aggs_df.yyyy_mm_dd, daily_aggs_df.avg_score, daily_aggs_df.se_score, label='model prediction')
ax.errorbar(daily_aggs_df.yyyy_mm_dd, daily_aggs_df.avg_response, daily_aggs_df.se_response, label='actual outcome')
但是我遇到了一个意外的异常:OverflowError: signed integer is less than minimum
. 我该如何解决这个错误?
作为参考,正常调用ax.plot(...)
,没有错误时间序列,工作得很好。我正在使用 Pandas 0.23.1 版。
完整的异常堆栈跟踪:
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/pyplot.pyc in post_execute()
147 def post_execute():
148 if matplotlib.is_interactive():
--> 149 draw_all()
150
151 # IPython >= 2
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/_pylab_helpers.pyc in draw_all(cls, force)
148 for f_mgr in cls.get_all_fig_managers():
149 if force or f_mgr.canvas.figure.stale:
--> 150 f_mgr.canvas.draw_idle()
151
152 atexit.register(Gcf.destroy_all)
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.pyc in draw_idle(self, *args, **kwargs)
2030 if not self._is_idle_drawing:
2031 with self._idle_draw_cntx():
-> 2032 self.draw(*args, **kwargs)
2033
2034 def draw_cursor(self, event):
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in draw(self)
462
463 try:
--> 464 self.figure.draw(self.renderer)
465 finally:
466 RendererAgg.lock.release()
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
61 def draw_wrapper(artist, renderer, *args, **kwargs):
62 before(artist, renderer)
---> 63 draw(artist, renderer, *args, **kwargs)
64 after(artist, renderer)
65
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/figure.pyc in draw(self, renderer)
1141
1142 mimage._draw_list_compositing_images(
-> 1143 renderer, self, dsu, self.suppressComposite)
1144
1145 renderer.close_group('figure')
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/image.pyc in _draw_list_compositing_images(renderer, parent, dsu, suppress_composite)
137 if not_composite or not has_images:
138 for zorder, a in dsu:
--> 139 a.draw(renderer)
140 else:
141 # Composite any adjacent images together
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
61 def draw_wrapper(artist, renderer, *args, **kwargs):
62 before(artist, renderer)
---> 63 draw(artist, renderer, *args, **kwargs)
64 after(artist, renderer)
65
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in draw(self, renderer, inframe)
2407 renderer.stop_rasterizing()
2408
-> 2409 mimage._draw_list_compositing_images(renderer, self, dsu)
2410
2411 renderer.close_group('axes')
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/image.pyc in _draw_list_compositing_images(renderer, parent, dsu, suppress_composite)
137 if not_composite or not has_images:
138 for zorder, a in dsu:
--> 139 a.draw(renderer)
140 else:
141 # Composite any adjacent images together
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
61 def draw_wrapper(artist, renderer, *args, **kwargs):
62 before(artist, renderer)
---> 63 draw(artist, renderer, *args, **kwargs)
64 after(artist, renderer)
65
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc in draw(self, renderer, *args, **kwargs)
1134 renderer.open_group(__name__)
1135
-> 1136 ticks_to_draw = self._update_ticks(renderer)
1137 ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
1138 renderer)
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc in _update_ticks(self, renderer)
967
968 interval = self.get_view_interval()
--> 969 tick_tups = [t for t in self.iter_ticks()]
970 if self._smart_bounds:
971 # handle inverted limits
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc in iter_ticks(self)
910 Iterate through all of the major and minor ticks.
911 """
--> 912 majorLocs = self.major.locator()
913 majorTicks = self.get_major_ticks(len(majorLocs))
914 self.major.formatter.set_locs(majorLocs)
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/dates.pyc in __call__(self)
981 def __call__(self):
982 'Return the locations of the ticks'
--> 983 self.refresh()
984 return self._locator()
985
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/dates.pyc in refresh(self)
1001 def refresh(self):
1002 'Refresh internal information based on current limits.'
-> 1003 dmin, dmax = self.viewlim_to_dt()
1004 self._locator = self.get_locator(dmin, dmax)
1005
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/dates.pyc in viewlim_to_dt(self)
758 vmin, vmax = vmax, vmin
759
--> 760 return num2date(vmin, self.tz), num2date(vmax, self.tz)
761
762 def _get_unit(self):
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/dates.pyc in num2date(x, tz)
399 tz = _get_rc_timezone()
400 if not cbook.iterable(x):
--> 401 return _from_ordinalf(x, tz)
402 else:
403 x = np.asarray(x)
/opt/blue-python/2.7/lib/python2.7/site-packages/matplotlib/dates.pyc in _from_ordinalf(x, tz)
252
253 ix = int(x)
--> 254 dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
255
256 remainder = float(x) - ix
OverflowError: signed integer is less than minimum