def draw(self, painter, dummy):
        # for some reason, in qwt 5 an extra parameter is needed
        # in the above function definition. The corresponding
        # C++ code offers several possibilities, but just a 'dummy'
        # seems adequate ....
        # 1. paint real value ticks as done in C++ code
        # 2. paint imag value ticks with the shift depending on
        #    the dimension and tick spacing
        # 3. draw backbone, if needed

        step_eps = 1.0e-6  # constant value in the c++ equivalent
        majLen = QwtScaleDraw.tickLength(self, QwtScaleDiv.MajorTick)
        medLen = QwtScaleDraw.tickLength(self, QwtScaleDiv.MediumTick)
        minLen = QwtScaleDraw.tickLength(self, QwtScaleDiv.MinorTick)
        #print('majLen medLen ', majLen, ' ', medLen, ' ', minLen)
        #print('lengths ', majLen,' ', medLen,' ', minLen)
        self.offset = 0
        scldiv = QwtScaleDraw.scaleDiv(self)
        # plot major ticks
        # Sometimes, for reasons deep inside Qwt, major_ticks seems to be
        # returned as a null list for reasons I don't understand
        major_ticks = scldiv.ticks(QwtScaleDiv.MajorTick)
        #print('major ticks ', major_ticks)
        major_step = 0.0
        try:
            major_step = major_ticks[1] - major_ticks[0]
        except:
            pass
        major_count = len(major_ticks)
        for i in range(major_count):
            val = major_ticks[i]
            #print('initial major val = ', val)
            if not self.end_value is None:
                v = val
                if val >= self.end_value:
                    v = val - self.delta
            else:
                if not self.divisor is None:
                    v = val % self.divisor
            if self.offset == 0 and v != val:
                self.offset = major_step - v % major_step
            val = val + self.offset
            #print('final major val = ', val)
            QwtScaleDraw.drawTick(self, painter, val, minLen)
            QwtScaleDraw.drawLabel(self, painter, val)

        # also, optionally plot a major tick at the dividing point
        if self.do_separator:
            QwtScaleDraw.drawTick(self, painter, self.separator, majLen)
            QwtScaleDraw.drawLabel(self, painter, self.separator)

        # Sometimes, for reasons deep inside Qwt, minor_ticks seems to be
        # returned as a null list for reasons I don't understand
        minor_ticks = scldiv.ticks(QwtScaleDiv.MinorTick)
        minor_step = 0.0
        try:
            minor_step = minor_ticks[1] - minor_ticks[0]
        except:
            pass
        minor_count = len(minor_ticks)

        # can't handle logs properly, but so what?
        #       if scldiv.logScale():
        #           pass
        #           for i in range(scldiv.minCnt()):
        #               QwtScaleDraw.drawTick(
        #                   self, painter, scldiv.minMark(i), minLen)
        #       else:
        if True:
            minor_ticks = scldiv.ticks(QwtScaleDiv.MinorTick)
            #print('minor ticks ', minor_ticks)
            medium_ticks = scldiv.ticks(QwtScaleDiv.MediumTick)
            #print('medium ticks ', medium_ticks)
            kmax = major_count - 1
            if kmax > 0:
                majTick = major_ticks[0]
                hval = majTick - 0.5 * major_step
                k = 0
                for i in range(minor_count):
                    val = minor_ticks[i]
                    if val > majTick:
                        if k < kmax:
                            k = k + 1
                            majTick = major_ticks[k]
                        else:
                            majTick += (major_ticks[kmax] + major_step)
                        hval = majTick - 0.5 * major_step
                    if abs(val - hval) < step_eps * major_step:
                        QwtScaleDraw.drawTick(self, painter, val, medLen)
                    else:
                        QwtScaleDraw.drawTick(self, painter, val, minLen)

        if QwtScaleDraw.Backbone:
            QwtScaleDraw.drawBackbone(self, painter)