En esta segunda parte las funciones que se añadirán a la grafica son las siguientes:
Una línea (marker) que corte el gráfico por el centro, Y= 0
Un indicador de coordenadas.
Marcar cada punto en la grafica en el que se hace clic.
Además de crear una línea horizontal donde se haga clic que “corte” la grafica.
Para crear el indicador de coordenadas se utiliza la clase QwtPlotPicker. La estructura general de este objeto es la siguiente:
-
QwtPlotPicker (int xAxis,
-
int yAxis,
-
int selectionFlags,
-
RubberBand rubberBand,
-
DisplayMode trackerMode,
-
QwtPlotCanvas *)
Donde:
xAxis: Es el eje de donde toma el valor mostrado con respecto al eje X. El plot puede tener dos ejes X, uno a la izquierda y otro a la derecha. En es elemento se indica de donde se tomará el valor de referencia.
yAxis: Tiene la misma función que xAxis pero tomando el eje Y como referencia.
selectionFlags: Puede seleccionarse entre PointSelection que devuelve un valor tipo QPoint o RectSelection que devuelve un valor tipo QRect.
Rubberband: Establece la forma de las líneas que indican el punto a seleccionar. Puede ser, una cruz que muestra lar coordenadas X y Y, una línea horizontal que solo muestra las coordenadas del eje X, una línea vertical que solo muestra las coordenadas del eje Y, sin líneas, una elipse, y un rectángulo. Estos dos últimos modos, solo se pueden utilizar con el tipo RectSelection.
DisplayMode: Puede ser siempre visible, visible cuando solo cuando se haga clic o invisible.
QwtPlotCanvas: Es el objeto tipo plot al que se le va a insertar el selector (picker).
En el siguiente ejemplo se creará un selector que indique las coordenadas X y Y, que sea visible solo cuando se haga clic en el plot, con el color de texto en blanco, y color de las líneas en color magenta.
-
picker = Qwt.QwtPlotPicker(Qwt.QwtPlot.xBottom,
-
Qwt.QwtPlot.yLeft,
-
Qwt.QwtPicker.PointSelection,
-
Qwt.QwtPlotPicker.CrossRubberBand,
-
Qwt.QwtPicker.ActiveOnly,
-
plot.canvas())
-
picker.setTrackerPen(Qt.QPen(Qt.Qt.white)) #text color
-
picker.setRubberBandPen(Qt.QPen(Qt.Qt.magenta))
Cuando ejecutamos el programa, al hacer clic en cualquier punto del plot obtenemos lo siguiente:
Ahora crearemos una línea horizontal que corta el gráfico por la mitad, esto se hace con un objeto qwtMarker. Solo necesitamos indicar las coordenadas de la línea, si es horizontal o vertical, y el color. Esto se hace de la siguiente manera: