私はsolflux
と呼ばれる日付と最大値と最小値とのパンダのデータフレームを持っている:pandas/matplotlibから "OverflowError:Python intがC longに変換するには大きすぎます"というエラーが表示されるのはなぜですか?
date max min
0 2015-01-01 148 10.5
1 2015-02-01 142 9.5
2 2015-03-01 140 9.0
3 2015-04-01 135 7.5
4 2015-05-01 132 7.5
...
私はmatplotlibの中にエラーバーとして、これらの値をプロットしたいです。私は、このエラーを取得する私は
dates = solflux['date']
deltas = (solflux['max'] - solflux['min'])/2
means = solflux['min'] + deltas
をしたい値を検索し、
import matplotlib.pyplot as plt
f = plt.figure()
ax = f.add_subplot(111)
ax.errorbar(dates, means, marker='+', yerr=deltas)
にプロットするために、次を使用します。
C:\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py:545: UserWarning: No labelled objects found. Use label='...' kwarg on individu
al plots.
warnings.warn("No labelled objects found. "
Traceback (most recent call last):
File "C:\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 197, in __draw_idle_agg
FigureCanvasAgg.draw(self)
File "C:\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 464, in draw
self.figure.draw(self.renderer)
File "C:\Anaconda3\lib\site-packages\matplotlib\artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Anaconda3\lib\site-packages\matplotlib\figure.py", line 1143, in draw
renderer, self, dsu, self.suppressComposite)
File "C:\Anaconda3\lib\site-packages\matplotlib\image.py", line 139, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Anaconda3\lib\site-packages\matplotlib\artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 2409, in draw
mimage._draw_list_compositing_images(renderer, self, dsu)
File "C:\Anaconda3\lib\site-packages\matplotlib\image.py", line 139, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Anaconda3\lib\site-packages\matplotlib\artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Anaconda3\lib\site-packages\matplotlib\axis.py", line 1136, in draw
ticks_to_draw = self._update_ticks(renderer)
File "C:\Anaconda3\lib\site-packages\matplotlib\axis.py", line 969, in _update_ticks
tick_tups = [t for t in self.iter_ticks()]
File "C:\Anaconda3\lib\site-packages\matplotlib\axis.py", line 969, in <listcomp>
tick_tups = [t for t in self.iter_ticks()]
File "C:\Anaconda3\lib\site-packages\matplotlib\axis.py", line 912, in iter_ticks
majorLocs = self.major.locator()
File "C:\Anaconda3\lib\site-packages\matplotlib\dates.py", line 983, in __call__
self.refresh()
File "C:\Anaconda3\lib\site-packages\matplotlib\dates.py", line 1003, in refresh
dmin, dmax = self.viewlim_to_dt()
File "C:\Anaconda3\lib\site-packages\matplotlib\dates.py", line 760, in viewlim_to_dt
return num2date(vmin, self.tz), num2date(vmax, self.tz)
File "C:\Anaconda3\lib\site-packages\matplotlib\dates.py", line 401, in num2date
return _from_ordinalf(x, tz)
File "C:\Anaconda3\lib\site-packages\matplotlib\dates.py", line 254, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
OverflowError: Python int too large to convert to C long
奇妙なことは、私は無視するということですyerr部分だけ実行する
ax.plot(dates, means, marker='+')
はすべて正常に動作します。私はこれがmatplotlibのバグだと思っていますが、誰かに何か提案があるのだろうかと疑問に思っていましたか?
私は、Python 3.6.0、Matplotlib 2.0.0、Pandas 0.19.2を実行しています。私が知っている限り最新のものです。
のみ7ヶ月下旬これに応じます。面白いことに、まったく新しいシステム(まだWindows 64ビット - Python 3.6 64ビット)でも、最初のmatplotlibソリューションでも、OverflowErrorはまだ得られます。 2番目のソリューションが機能するので、これを解決してマークします。 最後にやったことを覚えていなくても、おそらく手動でパンダを使わずにやっただけです。 – FHTMitchell