Example #1
0
 def buildCanvasMaps(self, plot, canvasRect):
     maps = []
     for axisId in range(QwtPlot.axisCnt):
         map_ = QwtScaleMap()
         map_.setTransformation(
             plot.axisScaleEngine(axisId).transformation())
         sd = plot.axisScaleDiv(axisId)
         map_.setScaleInterval(sd.lowerBound(), sd.upperBound())
         if plot.axisEnabled(axisId):
             s = plot.axisWidget(axisId)
             scaleRect = plot.plotLayout().scaleRect(axisId)
             if axisId in (QwtPlot.xTop, QwtPlot.xBottom):
                 from_ = scaleRect.left() + s.startBorderDist()
                 to = scaleRect.right() - s.endBorderDist()
             else:
                 from_ = scaleRect.bottom() - s.endBorderDist()
                 to = scaleRect.top() + s.startBorderDist()
         else:
             margin = 0
             if not plot.plotLayout().alignCanvasToScale(axisId):
                 margin = plot.plotLayout().canvasMargin(axisId)
             if axisId in (QwtPlot.yLeft, QwtPlot.yRight):
                 from_ = canvasRect.bottom() - margin
                 to = canvasRect.top() + margin
             else:
                 from_ = canvasRect.left() + margin
                 to = canvasRect.right() - margin
         map_.setPaintInterval(from_, to)
         maps.append(map_)
     return maps
Example #2
0
    def __init__(self):
        self.spacing = 4
        self.penWidth = 0
        self.minExtent = 0.0

        self.components = (
            QwtAbstractScaleDraw.Backbone
            | QwtAbstractScaleDraw.Ticks
            | QwtAbstractScaleDraw.Labels
        )
        self.tick_length = {
            QwtScaleDiv.MinorTick: 4.0,
            QwtScaleDiv.MediumTick: 6.0,
            QwtScaleDiv.MajorTick: 8.0,
        }
        self.tick_lighter_factor = {
            QwtScaleDiv.MinorTick: 100,
            QwtScaleDiv.MediumTick: 100,
            QwtScaleDiv.MajorTick: 100,
        }

        self.map = QwtScaleMap()
        self.scaleDiv = QwtScaleDiv()

        self.labelCache = {}
Example #3
0
    def drawColorBar(self, painter, colorMap, interval, scaleMap, orientation,
                     rect):
        """
        Draw a color bar into a rectangle

        :param QPainter painter: Painter
        :param qwt.color_map.QwtColorMap colorMap: Color map
        :param qwt.interval.QwtInterval interval: Value range
        :param qwt.scalemap.QwtScaleMap scaleMap: Scale map
        :param Qt.Orientation orientation: Orientation
        :param QRectF rect: Target rectangle
        """
        colorTable = []
        if colorMap.format() == QwtColorMap.Indexed:
            colorTable = colorMap.colorTable(interval)
        c = QColor()
        devRect = rect.toAlignedRect()
        pixmap = QPixmap(devRect.size())
        pixmap.fill(Qt.transparent)
        pmPainter = QPainter(pixmap)
        pmPainter.translate(-devRect.x(), -devRect.y())
        if orientation == Qt.Horizontal:
            sMap = QwtScaleMap(scaleMap)
            sMap.setPaintInterval(rect.left(), rect.right())
            for x in range(devRect.left(), devRect.right() + 1):
                value = sMap.invTransform(x)
                if colorMap.format() == QwtColorMap.RGB:
                    c.setRgba(colorMap.rgb(interval, value))
                else:
                    c = colorTable[colorMap.colorIndex(interval, value)]
                pmPainter.setPen(c)
                pmPainter.drawLine(
                    QLineF(x, devRect.top(), x, devRect.bottom()))
        else:
            sMap = QwtScaleMap(scaleMap)
            sMap.setPaintInterval(rect.bottom(), rect.top())
            for y in range(devRect.top(), devRect.bottom() + 1):
                value = sMap.invTransform(y)
                if colorMap.format() == QwtColorMap.RGB:
                    c.setRgba(colorMap.rgb(interval, value))
                else:
                    c = colorTable[colorMap.colorIndex(interval, value)]
                pmPainter.setPen(c)
                pmPainter.drawLine(
                    QLineF(devRect.left(), y, devRect.right(), y))
        pmPainter.end()
        self.drawPixmap(painter, rect, pixmap)
Example #4
0
 def buildCanvasMaps(self, plot, canvasRect):
     maps = []
     for axisId in range(QwtPlot.axisCnt):
         map_ = QwtScaleMap()
         map_.setTransformation(
                             plot.axisScaleEngine(axisId).transformation())
         sd = plot.axisScaleDiv(axisId)
         map_.setScaleInterval(sd.lowerBound(), sd.upperBound())
         if plot.axisEnabled(axisId):
             s = plot.axisWidget(axisId)
             scaleRect = plot.plotLayout().scaleRect(axisId)
             if axisId in (QwtPlot.xTop, QwtPlot.xBottom):
                 from_ = scaleRect.left() + s.startBorderDist()
                 to = scaleRect.right() - s.endBorderDist()
             else:
                 from_ = scaleRect.bottom() - s.endBorderDist()
                 to = scaleRect.top() + s.startBorderDist()
         else:
             margin = 0
             if not plot.plotLayout().alignCanvasToScale(axisId):
                 margin = plot.plotLayout().canvasMargin(axisId)
             if axisId in (QwtPlot.yLeft, QwtPlot.yRight):
                 from_ = canvasRect.bottom() - margin
                 to = canvasRect.top() + margin
             else:
                 from_ = canvasRect.left() + margin
                 to = canvasRect.right() - margin
         map_.setPaintInterval(from_, to)
         maps.append(map_)
     return maps
Example #5
0
 def drawColorBar(self, painter, colorMap, interval, scaleMap,
                  orientation, rect):
     """
     Draw a color bar into a rectangle
     
     :param QPainter painter: Painter
     :param qwt.color_map.QwtColorMap colorMap: Color map
     :param qwt.interval.QwtInterval interval: Value range
     :param qwt.scalemap.QwtScaleMap scaleMap: Scale map
     :param Qt.Orientation orientation: Orientation
     :param QRectF rect: Target rectangle
     """
     colorTable = []
     if colorMap.format() == QwtColorMap.Indexed:
         colorTable = colorMap.colorTable(interval)
     c = QColor()
     devRect = rect.toAlignedRect()
     pixmap = QPixmap(devRect.size())
     pixmap.fill(Qt.transparent)
     pmPainter = QPainter(pixmap)
     pmPainter.translate(-devRect.x(), -devRect.y())
     if orientation == Qt.Horizontal:
         sMap = QwtScaleMap(scaleMap)
         sMap.setPaintInterval(rect.left(), rect.right())
         for x in range(devRect.left(), devRect.right()+1):
             value = sMap.invTransform(x)
             if colorMap.format() == QwtColorMap.RGB:
                 c.setRgba(colorMap.rgb(interval, value))
             else:
                 c = colorTable[colorMap.colorIndex(interval, value)]
             pmPainter.setPen(c)
             pmPainter.drawLine(x, devRect.top(), x, devRect.bottom())
     else:
         sMap = QwtScaleMap(scaleMap)
         sMap.setPaintInterval(rect.bottom(), rect.top())
         for y in range(devRect.top(), devRect.bottom()+1):
             value = sMap.invTransform(y)
             if colorMap.format() == QwtColorMap.RGB:
                 c.setRgba(colorMap.rgb(interval, value))
             else:
                 c = colorTable[colorMap.colorIndex(interval, value)]
             pmPainter.setPen(c)
             pmPainter.drawLine(devRect.left(), y, devRect.right(), y)
     pmPainter.end()
     self.drawPixmap(painter, rect, pixmap)
Example #6
0
    def __init__(self):
        self.spacing = 4
        self.penWidth = 0
        self.minExtent = 0.

        self.components = QwtAbstractScaleDraw.Backbone|\
                          QwtAbstractScaleDraw.Ticks|\
                          QwtAbstractScaleDraw.Labels
        self.tickLength = [None] * 3
        self.tickLength[QwtScaleDiv.MinorTick] = 4.0
        self.tickLength[QwtScaleDiv.MediumTick] = 6.0
        self.tickLength[QwtScaleDiv.MajorTick] = 8.0

        self.map = QwtScaleMap()
        self.scaleDiv = QwtScaleDiv()

        self.labelCache = {}
Example #7
0
    def buildCanvasMaps(self, plot, canvasRect):
        """
        Calculated the scale maps for rendering the canvas

        :param qwt.plot.QwtPlot plot: Plot widget
        :param QRectF canvasRect: Target rectangle
        :return: Calculated scale maps
        """
        maps = []
        for axisId in QwtPlot.validAxes:
            map_ = QwtScaleMap()
            map_.setTransformation(
                plot.axisScaleEngine(axisId).transformation())
            sd = plot.axisScaleDiv(axisId)
            map_.setScaleInterval(sd.lowerBound(), sd.upperBound())
            if plot.axisEnabled(axisId):
                s = plot.axisWidget(axisId)
                scaleRect = plot.plotLayout().scaleRect(axisId)
                if axisId in (QwtPlot.xTop, QwtPlot.xBottom):
                    from_ = scaleRect.left() + s.startBorderDist()
                    to = scaleRect.right() - s.endBorderDist()
                else:
                    from_ = scaleRect.bottom() - s.endBorderDist()
                    to = scaleRect.top() + s.startBorderDist()
            else:
                margin = 0
                if not plot.plotLayout().alignCanvasToScale(axisId):
                    margin = plot.plotLayout().canvasMargin(axisId)
                if axisId in (QwtPlot.yLeft, QwtPlot.yRight):
                    from_ = canvasRect.bottom() - margin
                    to = canvasRect.top() + margin
                else:
                    from_ = canvasRect.left() + margin
                    to = canvasRect.right() - margin
            map_.setPaintInterval(from_, to)
            maps.append(map_)
        return maps
Example #8
0
    def buildCanvasMaps(self, plot, canvasRect):
        """
        Calculated the scale maps for rendering the canvas

        :param qwt.plot.QwtPlot plot: Plot widget
        :param QRectF canvasRect: Target rectangle
        :return: Calculated scale maps
        """
        maps = []
        for axisId in QwtPlot.validAxes:
            map_ = QwtScaleMap()
            map_.setTransformation(
                                plot.axisScaleEngine(axisId).transformation())
            sd = plot.axisScaleDiv(axisId)
            map_.setScaleInterval(sd.lowerBound(), sd.upperBound())
            if plot.axisEnabled(axisId):
                s = plot.axisWidget(axisId)
                scaleRect = plot.plotLayout().scaleRect(axisId)
                if axisId in (QwtPlot.xTop, QwtPlot.xBottom):
                    from_ = scaleRect.left() + s.startBorderDist()
                    to = scaleRect.right() - s.endBorderDist()
                else:
                    from_ = scaleRect.bottom() - s.endBorderDist()
                    to = scaleRect.top() + s.startBorderDist()
            else:
                margin = 0
                if not plot.plotLayout().alignCanvasToScale(axisId):
                    margin = plot.plotLayout().canvasMargin(axisId)
                if axisId in (QwtPlot.yLeft, QwtPlot.yRight):
                    from_ = canvasRect.bottom() - margin
                    to = canvasRect.top() + margin
                else:
                    from_ = canvasRect.left() + margin
                    to = canvasRect.right() - margin
            map_.setPaintInterval(from_, to)
            maps.append(map_)
        return maps
Example #9
0
 def canvasMap(self, axisId):
     map_ = QwtScaleMap()
     if not self.__data.canvas:
         return map_
     
     map_.setTransformation(self.axisScaleEngine(axisId).transformation())
     sd = self.axisScaleDiv(axisId)
     map_.setScaleInterval(sd.lowerBound(), sd.upperBound())
     
     if self.axisEnabled(axisId):
         s = self.axisWidget(axisId)
         if axisId in (self.yLeft, self.yRight):
             y = s.y() + s.startBorderDist() - self.__data.canvas.y()
             h = s.height() - s.startBorderDist() - s.endBorderDist()
             map_.setPaintInterval(y+h, y)
         else:
             x = s.x() + s.startBorderDist() - self.__data.canvas.x()
             w = s.width() - s.startBorderDist() - s.endBorderDist()
             map_.setPaintInterval(x, x+w)
     else:
         canvasRect = self.__data.canvas.contentsRect()
         if axisId in (self.yLeft, self.yRight):
             top = 0
             if not self.plotLayout().alignCanvasToScale(self.xTop):
                 top = self.plotLayout().canvasMargin(self.xTop)
             bottom = 0
             if not self.plotLayout().alignCanvasToScale(self.xBottom):
                 bottom = self.plotLayout().canvasMargin(self.xBottom)
             map_.setPaintInterval(canvasRect.bottom()-bottom,
                                   canvasRect.top()+top)
         else:
             left = 0
             if not self.plotLayout().alignCanvasToScale(self.yLeft):
                 left = self.plotLayout().canvasMargin(self.yLeft)
             right = 0
             if not self.plotLayout().alignCanvasToScale(self.yRight):
                 right = self.plotLayout().canvasMargin(self.yRight)
             map_.setPaintInterval(canvasRect.left()+left,
                                   canvasRect.right()-right)
     return map_