'Return the values and spacing of ticks to draw::
(spacing, [major ticks]),
(spacing, [minor ticks]),
By default, this method calls tickSpacing to determine the correct tick locations.
This is a good method to override in subclasses.'

def tickValues(self, minVal, maxVal, size):

    (minVal, maxVal) = sorted((minVal, maxVal))
    minVal *= self.scale
    maxVal *= self.scale
    ticks = []
    tickLevels = self.tickSpacing(minVal, maxVal, size)
    allValues = np.array([])
    for i in range(len(tickLevels)):
        (spacing, offset) = tickLevels[i]
        start = ((np.ceil(((minVal - offset) / spacing)) * spacing) + offset)
        num = (int(((maxVal - start) / spacing)) + 1)
        values = (((np.arange(num) * spacing) + start) / self.scale)
        values = list(filter((lambda x: all((np.abs((allValues - x)) > (spacing * 0.01)))), values))
        allValues = np.concatenate([allValues, values])
        ticks.append(((spacing / self.scale), values))
    if self.logMode:
        return self.logTickValues(minVal, maxVal, size, ticks)
    return ticks
