Iteration problem with plot_date

H?ctor> 720, in __init__ MultipleLocator.__init__(self,
    H?ctor> base*SEC_PER_MIN) NameError: global name 'SEC_PER_MIN' is
    H?ctor> not defined

This is a bug in ticker that will be fixed in the next bugfix
release. If you want to fix it yourself now, edit
matplotlib/ticker.py and add SEC_PER_MIN to the list of things
imported from the dates module. Ie,

from dates import EpochConverter, SEC_PER_HOUR, SEC_PER_DAY, SEC_PER_WEEK, \
     SEC_PER_MIN

John Hunter wrote:

"Héctor" == Héctor Villafuerte D <hec.villafuerte@...162...> writes:
           
   > 720, in __init__ MultipleLocator.__init__(self,
   > base*SEC_PER_MIN) NameError: global name 'SEC_PER_MIN' is
   > not defined

This is a bug in ticker that will be fixed in the next bugfix
release. If you want to fix it yourself now, edit
matplotlib/ticker.py and add SEC_PER_MIN to the list of things
imported from the dates module. Ie,

from dates import EpochConverter, SEC_PER_HOUR, SEC_PER_DAY, SEC_PER_WEEK, \
    SEC_PER_MIN

Thanks John,
everything works right now, except for fact that I need to "clear" it on every iteration ...
and the line where I try to clear the previous figure ("ax.clear()") is giving me troubles.
Thanks in advance!

···

######################################################################
ERROR
######################################################################
C:\Documents and Settings\villaf>python e:\src\python\ttp\ttp_plot.py
1083001763.0 : Mon Apr 26 09:49:23 2004 : ttp_plot start
Traceback (most recent call last):
  File "e:\src\python\ttp\ttp_plot.py", line 58, in ?
    get_data('traffic', 'tmp_calls0', 3)
  File "e:\src\python\ttp\ttp_plot.py", line 39, in get_data
    plot_date(datum, vals, PyDatetimeConverter(), 'b-')
  File "C:\Python23\Lib\site-packages\matplotlib\matlab.py", line 1011, in plot_date
    try: lines = gca().plot_date(*args, **kwargs)
  File "C:\Python23\Lib\site-packages\matplotlib\axes.py", line 1172, in plot_date
    self.plot(e, y, fmt, **kwargs)
  File "C:\Python23\Lib\site-packages\matplotlib\axes.py", line 1156, in plot
    self.xaxis.autoscale_view()
  File "C:\Python23\Lib\site-packages\matplotlib\axis.py", line 405, in autoscale_view
    self._majorTicker.locator.autoscale()
  File "C:\Python23\lib\site-packages\matplotlib\ticker.py", line 567, in autoscale
    self._locator = self.get_locator(d)
  File "C:\Python23\lib\site-packages\matplotlib\ticker.py", line 573, in get_locator
    ld = log10(d)
OverflowError: math range error

######################################################################
SCRIPT
######################################################################

import time, ConfigParser, MySQLdb
import datetime
import matplotlib
matplotlib.use('Agg')
from matplotlib.matlab import *
from matplotlib.dates import PyDatetimeConverter, MONDAY
from matplotlib.ticker import WeekdayLocator, DayLocator, DateFormatter

config = ConfigParser.ConfigParser()
config.readfp(open('e:\\src\\python\\ttp\\ttp.conf', 'r'))
loc_host = config.get('DATABASE', 'loc_host')
loc_user = config.get('DATABASE', 'loc_user')
loc_passwd = config.get('DATABASE', 'loc_passwd')
loc_db = config.get('DATABASE', 'loc_db')

loc_db = MySQLdb.connect(host = loc_host, user = loc_user, passwd = loc_passwd, db = loc_db)
cursor = loc_db.cursor()

def get_data(db, table, dig):

    cursor.execute("DROP TABLE IF EXISTS %s.tmp" % (db))
    cursor.execute("CREATE TABLE %s.tmp "
                   "SELECT fecha, mid(tel,1,%d) as tel, sum(minutos) as min FROM %s.%s GROUP BY 1,2" % (db,dig,db,table))
    cursor.execute("SELECT DISTINCT tel FROM %s.tmp" % (db))
    tels = cursor.fetchall()
    for tel in tels:
        cursor.execute("SELECT fecha, min FROM %s.tmp WHERE tel = '%s'" % (db,tel[0]))
        data = cursor.fetchall()
        datum = [datetime.datetime(int(q[0][0:4]), int(q[0][4:6]), int(q[0][6:8]), 0, 0) for q in data]
        vals = [q[1] for q in data]

        ax = subplot(1,1,1)
        plot_date(datum, vals, PyDatetimeConverter(), 'b-')

        ax.xaxis.set_major_locator(WeekdayLocator(MONDAY))
        ax.xaxis.set_major_formatter(DateFormatter('%b %d'))
        ax.xaxis.set_minor_locator(DayLocator())
        ax.xaxis.autoscale_view()
        title('TEST')
        ylabel('test')
        labels = ax.get_xticklabels()
        set(labels, 'rotation', 'vertical')
        grid(True)
        savefig("c:\\tmp\\%s_%s" % (tel[0],table))
        ax.clear()

# --- main -- #
if __name__ == '__main__':
    print time.mktime(time.localtime()), ': \t', time.asctime(), ': \t', 'ttp_plot start'
    get_data('traffic', 'tmp_calls0', 3)
    print time.mktime(time.localtime()), ': \t', time.asctime(), ': \t', 'ttp_plot end'