TypeError when plotting dates on Windows 32 bit

I recently upgrade to Python 2.7 (I used EPD Free for the install which comes with matplotlib 1.1.0) and I’m getting the following error when I try to plot dates. I’ve tried a few different backends, but they all seem to give the same error. I had no issues using Python 2.6 up to now. I think this may have to do with the new requirement in Python 2.7 that if you passed a float to a function that was defined as an int, it now raises a TypeError (instead of a DeprecationWarning).

Traceback (most recent call last):
File “C:\Python27\lib\site-packages\matplotlib\backends\backend_wx.py”, line 1289, in _onLeftButtonDown
FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)

File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1632, in button_press_event
self.callbacks.process(s, mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 256, in process

proxy(*args, **kwargs)

File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 189, in call
return mtd(*args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1522, in pick

self.figure.pick(mouseevent)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 332, in pick
a.pick(mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\axes.py”, line 3038, in pick

martist.Artist.pick(self,args[0])

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 332, in pick
a.pick(mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 321, in pick

self.figure.canvas.pick_event(mouseevent, self, **prop)

File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1598, in pick_event
self.callbacks.process(s, event)
File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 256, in process

proxy(*args, **kwargs)

File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 189, in call
return mtd(*args, **kwargs)
File “C:\src\QC_DUAL\src\QC_DUAL\databrowser.py”, line 284, in onpick

self.fig.canvas.draw()

File “C:\Python27\lib\site-packages\matplotlib\backends\backend_wxagg.py”, line 59, in draw
FigureCanvasAgg.draw(self)
File “C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py”, line 401, in draw

self.figure.draw(self.renderer)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\figure.py”, line 884, in draw

func(*args)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\axes.py”, line 1983, in draw

a.draw(renderer)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 1036, in draw

ticks_to_draw = self._update_ticks(renderer)

File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 926, in _update_ticks
tick_tups = [ t for t in self.iter_ticks()]
File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 873, in iter_ticks

majorLocs = self.major.locator()

File “C:\Python27\lib\site-packages\matplotlib\dates.py”, line 594, in call
dates = self.rule.between(dmin, dmax, True)
File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 207, in between

for i in gen:

File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 451, in _iter
dayset, start, end = getdayset(year, month, day)
File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 797, in ddayset

i = datetime.date(year, month, day).toordinal()-self.yearordinal

TypeError: integer argument expected, got float

Ok, so I managed to track this down. Apparently I was using a float instead of an int in the interval argument of the HourLocator. I think casting to the interval argument to int in the dates.HourLocator class would be a good idea so users not familiar with the nuance won’t have to deal with this headache.

···

On Wed, Mar 14, 2012 at 2:16 PM, Aman Thakral <aman.thakral@…287…> wrote:

I recently upgrade to Python 2.7 (I used EPD Free for the install which comes with matplotlib 1.1.0) and I’m getting the following error when I try to plot dates. I’ve tried a few different backends, but they all seem to give the same error. I had no issues using Python 2.6 up to now. I think this may have to do with the new requirement in Python 2.7 that if you passed a float to a function that was defined as an int, it now raises a TypeError (instead of a DeprecationWarning).

Traceback (most recent call last):
File “C:\Python27\lib\site-packages\matplotlib\backends\backend_wx.py”, line 1289, in _onLeftButtonDown
FigureCanvasBase.button_press_event(self, x, y, 1, guiEvent=evt)

File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1632, in button_press_event
self.callbacks.process(s, mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 256, in process

proxy(*args, **kwargs)

File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 189, in call
return mtd(*args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1522, in pick

self.figure.pick(mouseevent)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 332, in pick
a.pick(mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\axes.py”, line 3038, in pick

martist.Artist.pick(self,args[0])

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 332, in pick
a.pick(mouseevent)
File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 321, in pick

self.figure.canvas.pick_event(mouseevent, self, **prop)

File “C:\Python27\lib\site-packages\matplotlib\backend_bases.py”, line 1598, in pick_event
self.callbacks.process(s, event)
File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 256, in process

proxy(*args, **kwargs)

File “C:\Python27\lib\site-packages\matplotlib\cbook.py”, line 189, in call
return mtd(*args, **kwargs)
File “C:\src\QC_DUAL\src\QC_DUAL\databrowser.py”, line 284, in onpick

self.fig.canvas.draw()

File “C:\Python27\lib\site-packages\matplotlib\backends\backend_wxagg.py”, line 59, in draw
FigureCanvasAgg.draw(self)
File “C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py”, line 401, in draw

self.figure.draw(self.renderer)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\figure.py”, line 884, in draw

func(*args)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\axes.py”, line 1983, in draw

a.draw(renderer)

File “C:\Python27\lib\site-packages\matplotlib\artist.py”, line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 1036, in draw

ticks_to_draw = self._update_ticks(renderer)

File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 926, in _update_ticks
tick_tups = [ t for t in self.iter_ticks()]
File “C:\Python27\lib\site-packages\matplotlib\axis.py”, line 873, in iter_ticks

majorLocs = self.major.locator()

File “C:\Python27\lib\site-packages\matplotlib\dates.py”, line 594, in call
dates = self.rule.between(dmin, dmax, True)
File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 207, in between

for i in gen:

File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 451, in _iter
dayset, start, end = getdayset(year, month, day)
File “C:\Python27\lib\site-packages\dateutil\rrule.py”, line 797, in ddayset

i = datetime.date(year, month, day).toordinal()-self.yearordinal

TypeError: integer argument expected, got float