class CartesianAxis(QwtPlotItem): """Supports a coordinate system similar to http://en.wikipedia.org/wiki/Image:Cartesian-coordinate-system.svg""" def __init__(self, masterAxis, slaveAxis): """Valid input values for masterAxis and slaveAxis are QwtPlot.yLeft, QwtPlot.yRight, QwtPlot.xBottom, and QwtPlot.xTop. When masterAxis is an x-axis, slaveAxis must be an y-axis; and vice versa.""" QwtPlotItem.__init__(self) self.__axis = masterAxis if masterAxis in (QwtPlot.yLeft, QwtPlot.yRight): self.setAxes(slaveAxis, masterAxis) else: self.setAxes(masterAxis, slaveAxis) self.scaleDraw = QwtScaleDraw() self.scaleDraw.setAlignment( (QwtScaleDraw.LeftScale, QwtScaleDraw.RightScale, QwtScaleDraw.BottomScale, QwtScaleDraw.TopScale)[ masterAxis ] ) def draw(self, painter, xMap, yMap, rect): """Draw an axis on the plot canvas""" xtr = xMap.transform ytr = yMap.transform if self.__axis in (QwtPlot.yLeft, QwtPlot.yRight): self.scaleDraw.move(round(xtr(0.0)), yMap.p2()) self.scaleDraw.setLength(yMap.p1() - yMap.p2()) elif self.__axis in (QwtPlot.xBottom, QwtPlot.xTop): self.scaleDraw.move(xMap.p1(), round(ytr(0.0))) self.scaleDraw.setLength(xMap.p2() - xMap.p1()) self.scaleDraw.setScaleDiv(self.plot().axisScaleDiv(self.__axis)) self.scaleDraw.draw(painter, self.plot().palette())
class CartesianAxis(QwtPlotItem): """Supports a coordinate system similar to http://en.wikipedia.org/wiki/Image:Cartesian-coordinate-system.svg""" def __init__(self, masterAxis, slaveAxis): """Valid input values for masterAxis and slaveAxis are QwtPlot.yLeft, QwtPlot.yRight, QwtPlot.xBottom, and QwtPlot.xTop. When masterAxis is an x-axis, slaveAxis must be an y-axis; and vice versa.""" QwtPlotItem.__init__(self) self.__axis = masterAxis if masterAxis in (QwtPlot.yLeft, QwtPlot.yRight): self.setAxes(slaveAxis, masterAxis) else: self.setAxes(masterAxis, slaveAxis) self.scaleDraw = QwtScaleDraw() self.scaleDraw.setAlignment((QwtScaleDraw.LeftScale, QwtScaleDraw.RightScale, QwtScaleDraw.BottomScale, QwtScaleDraw.TopScale)[masterAxis]) def draw(self, painter, xMap, yMap, rect): """Draw an axis on the plot canvas""" xtr = xMap.transform ytr = yMap.transform if self.__axis in (QwtPlot.yLeft, QwtPlot.yRight): self.scaleDraw.move(round(xtr(0.0)), yMap.p2()) self.scaleDraw.setLength(yMap.p1()-yMap.p2()) elif self.__axis in (QwtPlot.xBottom, QwtPlot.xTop): self.scaleDraw.move(xMap.p1(), round(ytr(0.0))) self.scaleDraw.setLength(xMap.p2()-xMap.p1()) self.scaleDraw.setScaleDiv(self.plot().axisScaleDiv(self.__axis)) self.scaleDraw.draw(painter, self.plot().palette())