QwtPlotCurve - A plot item, that represents a series of points.
Contents
Constructor & Destructor Documentation
QwtPlotCurve::QwtPlotCurve(constQString&title=QString())[explicit]
Constructor
Parameters:title Title of the curve
QwtPlotCurve::QwtPlotCurve(constQwtText&title)[explicit]
Constructor
Parameters:title Title of the curve
Detailed Description
A plot item, that represents a series of points.
A curve is the representation of a series of points in the x-y plane. It supports different display
styles, interpolation ( f.e. spline ) and symbols.
Usagea)Assigncurveproperties
When a curve is created, it is configured to draw black solid lines with in QwtPlotCurve::Lines
style and no symbols. You can change this by calling setPen(), setStyle() and setSymbol().
b)Connect/Assigndata.QwtPlotCurve gets its points using a QwtSeriesData object offering a bridge to the real storage
of the points ( like QAbstractItemModel ). There are several convenience classes derived from
QwtSeriesData, that also store the points inside ( like QStandardItemModel ). QwtPlotCurve also
offers a couple of variations of setSamples(), that build QwtSeriesData objects from arrays
internally.
c)Attachthecurvetoaplot
See QwtPlotItem::attach()Example:
see examples/bode
Seealso:QwtPointSeriesData, QwtSymbol, QwtScaleMapMember Enumeration Documentation
enumQwtPlotCurve::CurveAttribute
Attribute for drawing the curve
Seealso:setCurveAttribute(), testCurveAttribute(), curveFitter()EnumeratorInverted
For QwtPlotCurve::Steps only. Draws a step function from the right to the left.
Fitted Only in combination with QwtPlotCurve::Lines A QwtCurveFitter tries to interpolate/smooth the
curve, before it is painted.
Note:
Curve fitting requires temporary memory for calculating coefficients and additional points. If
painting in QwtPlotCurve::Fitted mode is slow it might be better to fit the points, before they are
passed to QwtPlotCurve.
enumQwtPlotCurve::CurveStyle
Curve styles.
Seealso:setStyle(), style()EnumeratorNoCurve
Don't draw a curve. Note: This doesn't affect the symbols.
Lines Connect the points with straight lines. The lines might be interpolated depending on the 'Fitted'
attribute. Curve fitting can be configured using setCurveFitter().
Sticks Draw vertical or horizontal sticks ( depending on the orientation() ) from a baseline which is
defined by setBaseline().
Steps Connect the points with a step function. The step function is drawn from the left to the right or
vice versa, depending on the QwtPlotCurve::Inverted attribute.
Dots Draw dots at the locations of the data points. Note: This is different from a dotted line (see
setPen()), and faster as a curve in QwtPlotCurve::NoStyle style and a symbol painting a point.
UserCurve
Styles >= QwtPlotCurve::UserCurve are reserved for derived classes of QwtPlotCurve that overload
drawCurve() with additional application specific curve types.
enumQwtPlotCurve::LegendAttribute
Attributes how to represent the curve on the legend
Seealso:setLegendAttribute(), testLegendAttribute(), QwtPlotItem::legendData(), legendIcon()EnumeratorLegendNoAttributeQwtPlotCurve tries to find a color representing the curve and paints a rectangle with it.
LegendShowLine
If the style() is not QwtPlotCurve::NoCurve a line is painted with the curve pen().
LegendShowSymbol
If the curve has a valid symbol it is painted.
LegendShowBrush
If the curve has a brush a rectangle filled with the curve brush() is painted.
enumQwtPlotCurve::PaintAttribute
Attributes to modify the drawing algorithm. The default setting enables ClipPolygons | FilterPoints
Seealso:setPaintAttribute(), testPaintAttribute()EnumeratorClipPolygons
Clip polygons before painting them. In situations, where points are far outside the visible area
(f.e when zooming deep) this might be a substantial improvement for the painting performance
FilterPoints
Tries to reduce the data that has to be painted, by sorting out duplicates, or paintings outside
the visible area. Might have a notable impact on curves with many close points. Only a couple of
very basic filtering algorithms are implemented.
MinimizeMemory
Minimize memory usage that is temporarily needed for the translated points, before they get
painted. This might slow down the performance of painting
ImageBuffer
Render the points to a temporary image and paint the image. This is a very special optimization
for Dots style, when having a huge amount of points. With a reasonable number of points
QPainter::drawPoints() will be faster.
Member Function Documentation
doubleQwtPlotCurve::baseline()constReturns:
Value of the baseline
Seealso:setBaseline()constQBrush&QwtPlotCurve::brush()constReturns:
Brush used to fill the area between lines and the baseline
Seealso:setBrush(), setBaseline(), baseline()voidQwtPlotCurve::closePolyline(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,QPolygonF&polygon)const[protected]
Complete a polygon to be a closed polygon including the area between the original polygon and the
baseline.
Parameters:painter Painter
xMap X map
yMap Y map
polygon Polygon to be completed
intQwtPlotCurve::closestPoint(constQPoint&pos,double*dist=NULL)const
Find the closest curve point for a specific position
Parameters:pos Position, where to look for the closest curve point
dist If dist != NULL, closestPoint() returns the distance between the position and the closest curve
point
Returns:
Index of the closest curve point, or -1 if none can be found ( f.e when the curve has no points )
Note:closestPoint() implements a dumb algorithm, that iterates over all points
QwtCurveFitter*QwtPlotCurve::curveFitter()const
Get the curve fitter. If curve fitting is disabled NULL is returned.
Returns:
Curve fitter
Seealso:setCurveFitter(), FittedvoidQwtPlotCurve::drawCurve(QPainter*painter,intstyle,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw the line part (without symbols) of a curve interval.
Parameters:painter Painter
style curve style, see QwtPlotCurve::CurveStylexMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from index of the first point to be painted
to index of the last point to be painted
Seealso:draw(), drawDots(), drawLines(), drawSteps(), drawSticks()voidQwtPlotCurve::drawDots(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw dots
Parameters:painter Painter
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from index of the first point to be painted
to index of the last point to be painted
Seealso:draw(), drawCurve(), drawSticks(), drawLines(), drawSteps()voidQwtPlotCurve::drawLines(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw lines. If the CurveAttribute Fitted is enabled a QwtCurveFitter tries to interpolate/smooth the
curve, before it is painted.
Parameters:painter Painter
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from index of the first point to be painted
to index of the last point to be painted
Seealso:setCurveAttribute(), setCurveFitter(), draw(), drawLines(), drawDots(), drawSteps(), drawSticks()voidQwtPlotCurve::drawSeries(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[virtual]
Draw an interval of the curve
Parameters:painter Painter
xMap Maps x-values into pixel coordinates.
yMap Maps y-values into pixel coordinates.
canvasRect Contents rectangle of the canvas
from Index of the first point to be painted
to Index of the last point to be painted. If to < 0 the curve will be painted to its last point.
Seealso:drawCurve(), drawSymbols(),
Implements QwtPlotSeriesItem.
voidQwtPlotCurve::drawSteps(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw step function
The direction of the steps depends on Inverted attribute.
Parameters:painter Painter
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from index of the first point to be painted
to index of the last point to be painted
Seealso:CurveAttribute, setCurveAttribute(), draw(), drawCurve(), drawDots(), drawLines(), drawSticks()voidQwtPlotCurve::drawSticks(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw sticks
Parameters:painter Painter
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from index of the first point to be painted
to index of the last point to be painted
Seealso:draw(), drawCurve(), drawDots(), drawLines(), drawSteps()voidQwtPlotCurve::drawSymbols(QPainter*painter,constQwtSymbol&symbol,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,intfrom,intto)const[protected],[virtual]
Draw symbols
Parameters:painter Painter
symbol Curve symbol
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
from Index of the first point to be painted
to Index of the last point to be painted
Seealso:setSymbol(), drawSeries(), drawCurve()voidQwtPlotCurve::fillCurve(QPainter*painter,constQwtScaleMap&xMap,constQwtScaleMap&yMap,constQRectF&canvasRect,QPolygonF&polygon)const[protected],[virtual]
Fill the area between the curve and the baseline with the curve brush
Parameters:painter Painter
xMap x map
yMap y map
canvasRect Contents rectangle of the canvas
polygon Polygon - will be modified !
Seealso:setBrush(), setBaseline(), setStyle()QwtGraphicQwtPlotCurve::legendIcon(intindex,constQSizeF&size)const[virtual]Returns:
Icon representing the curve on the legend
Parameters:index Index of the legend entry ( ignored as there is only one )
size Icon size
Seealso:QwtPlotItem::setLegendIconSize(), QwtPlotItem::legendData()
Reimplemented from QwtPlotItem.
constQPen&QwtPlotCurve::pen()constReturns:
Pen used to draw the lines
Seealso:setPen(), brush()intQwtPlotCurve::rtti()const[virtual]Returns:QwtPlotItem::Rtti_PlotCurve
Reimplemented from QwtPlotItem.
voidQwtPlotCurve::setBaseline(doublevalue)
Set the value of the baseline. The baseline is needed for filling the curve with a brush or the Sticks
drawing style.
The interpretation of the baseline depends on the orientation(). With Qt::Horizontal, the baseline is
interpreted as a horizontal line at y = baseline(), with Qt::Vertical, it is interpreted as a vertical
line at x = baseline().
The default value is 0.0.
Parameters:value Value of the baseline
Seealso:baseline(), setBrush(), setStyle(), QwtPlotAbstractSeriesItem::orientation()
voidQwtPlotCurve::setBrush(constQBrush&brush)
Assign a brush. In case of brush.style() != QBrush::NoBrush and style() != QwtPlotCurve::Sticks the area
between the curve and the baseline will be filled.
In case !brush.color().isValid() the area will be filled by pen.color(). The fill algorithm simply
connects the first and the last curve point to the baseline. So the curve data has to be sorted
(ascending or descending).
Parameters:brush New brush
Seealso:brush(), setBaseline(), baseline()voidQwtPlotCurve::setCurveAttribute(CurveAttributeattribute,boolon=true)
Specify an attribute for drawing the curve
Parameters:attribute Curve attribute
on On/Off
/sa testCurveAttribute(), setCurveFitter()voidQwtPlotCurve::setCurveFitter(QwtCurveFitter*curveFitter)
Assign a curve fitter
The curve fitter 'smooths' the curve points, when the Fitted CurveAttribute is set. setCurveFitter(NULL)
also disables curve fitting.
The curve fitter operates on the translated points ( = widget coordinates) to be functional for
logarithmic scales. Obviously this is less performant for fitting algorithms, that reduce the number of
points.
For situations, where curve fitting is used to improve the performance of painting huge series of points
it might be better to execute the fitter on the curve points once and to cache the result in the
QwtSeriesData object.
Parameters:curveFitter()CurvefitterSeealso:FittedvoidQwtPlotCurve::setLegendAttribute(LegendAttributeattribute,boolon=true)
Specify an attribute how to draw the legend icon
Parameters:attribute Attribute
on On/Off /sa testLegendAttribute(). legendIcon()voidQwtPlotCurve::setPaintAttribute(PaintAttributeattribute,boolon=true)
Specify an attribute how to draw the curve
Parameters:attribute Paint attribute
on On/Off
Seealso:testPaintAttribute()voidQwtPlotCurve::setPen(constQColor&color,qrealwidth=0.0,Qt::PenStylestyle=Qt::SolidLine)
Build and assign a pen
In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic ( see QPen::isCosmetic() ).
This method has been introduced to hide this incompatibility.
Parameters:color Pen color
width Pen width
style Pen style
Seealso:pen(), brush()voidQwtPlotCurve::setPen(constQPen&pen)
Assign a pen
Parameters:pen New pen
Seealso:pen(), brush()voidQwtPlotCurve::setRawSamples(constdouble*xData,constdouble*yData,intsize)
Initialize the data by pointing to memory blocks which are not managed by QwtPlotCurve. setRawSamples is
provided for efficiency. It is important to keep the pointers during the lifetime of the underlying
QwtCPointerData class.
Parameters:xData pointer to x data
yData pointer to y data
size size of x and y
Seealso:QwtCPointerDatavoidQwtPlotCurve::setSamples(constdouble*xData,constdouble*yData,intsize)
Set data by copying x- and y-values from specified memory blocks. Contrary to setRawSamples(), this
function makes a 'deep copy' of the data.
Parameters:xData pointer to x values
yData pointer to y values
size size of xData and yData
Seealso:QwtPointArrayDatavoidQwtPlotCurve::setSamples(constQVector<double>&xData,constQVector<double>&yData)
Initialize data with x- and y-arrays (explicitly shared)
Parameters:xData x data
yData y data
Seealso:QwtPointArrayDatavoidQwtPlotCurve::setSamples(constQVector<QPointF>&samples)
Initialize data with an array of points.
Parameters:samples Vector of points
Note:
QVector is implicitly shared
QPolygonF is derived from QVector<QPointF>
voidQwtPlotCurve::setSamples(QwtSeriesData<QPointF>*data)
Assign a series of points
setSamples() is just a wrapper for setData() without any additional value - beside that it is easier to
find for the developer.
Parameters:data Data
Warning:
The item takes ownership of the data object, deleting it when its not used anymore.
voidQwtPlotCurve::setStyle(CurveStylestyle)
Set the curve's drawing style
Parameters:style Curve style
Seealso:style()voidQwtPlotCurve::setSymbol(QwtSymbol*symbol)
Assign a symbol. The curve will take the ownership of the symbol, hence the previously set symbol will be
delete by setting a new one. If symbol is NULL no symbol will be drawn.
Parameters:symbol Symbol
Seealso:symbol()QwtPlotCurve::CurveStyleQwtPlotCurve::style()constReturns:
Style of the curve
Seealso:setStyle()constQwtSymbol*QwtPlotCurve::symbol()constReturns:
Current symbol or NULL, when no symbol has been assigned
Seealso:setSymbol()boolQwtPlotCurve::testCurveAttribute(CurveAttributeattribute)constReturns:
true, if attribute is enabled
Seealso:setCurveAttribute()boolQwtPlotCurve::testLegendAttribute(LegendAttributeattribute)constReturns:
True, when attribute is enabled
Seealso:setLegendAttribute()boolQwtPlotCurve::testPaintAttribute(PaintAttributeattribute)constReturns:
True, when attribute is enabled
Seealso:setPaintAttribute()Name
QwtPlotCurve - A plot item, that represents a series of points.
Synopsis
#include <qwt_plot_curve.h>
Inherits QwtPlotSeriesItem, and QwtSeriesStore<QPointF>.
PublicTypes
enum CurveStyle { NoCurve = -1, Lines, Sticks, Steps, Dots, UserCurve = 100 }
enum CurveAttribute { Inverted = 0x01, Fitted = 0x02 }
enum LegendAttribute { LegendNoAttribute = 0x00, LegendShowLine = 0x01, LegendShowSymbol = 0x02,
LegendShowBrush = 0x04 }
enum PaintAttribute { ClipPolygons = 0x01, FilterPoints = 0x02, MinimizeMemory = 0x04, ImageBuffer = 0x08
}
typedef QFlags< CurveAttribute > CurveAttributes
Curve attributes.
typedef QFlags< LegendAttribute > LegendAttributes
Legend attributes.
typedef QFlags< PaintAttribute > PaintAttributes
Paint attributes.
PublicMemberFunctionsQwtPlotCurve (const QString &title=QString())
QwtPlotCurve (const QwtText &title)
virtual ~QwtPlotCurve ()
Destructor.
virtual int rtti () const
void setPaintAttribute (PaintAttribute, bool on=true)
bool testPaintAttribute (PaintAttribute) const
void setLegendAttribute (LegendAttribute, bool on=true)
bool testLegendAttribute (LegendAttribute) const
void setRawSamples (const double *xData, const double *yData, int size)
Initialize the data by pointing to memory blocks which are not managed by QwtPlotCurve.
void setSamples (const double *xData, const double *yData, int size)
void setSamples (const QVector< double > &xData, const QVector< double > &yData)
Initialize data with x- and y-arrays (explicitly shared)
void setSamples (const QVector< QPointF > &)
void setSamples (QwtSeriesData< QPointF > *)
int closestPoint (const QPoint &pos, double *dist=NULL) const
double minXValue () const
boundingRect().left()
double maxXValue () const
boundingRect().right()
double minYValue () const
boundingRect().top()
double maxYValue () const
boundingRect().bottom()
void setCurveAttribute (CurveAttribute, bool on=true)
bool testCurveAttribute (CurveAttribute) const
void setPen (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)
void setPen (const QPen &)
const QPen & pen () const
void setBrush (const QBrush &)
Assign a brush.
const QBrush & brush () const
void setBaseline (double)
Set the value of the baseline.
double baseline () const
void setStyle (CurveStylestyle)
CurveStylestyle () const
void setSymbol (QwtSymbol *)
Assign a symbol.
const QwtSymbol * symbol () const
void setCurveFitter (QwtCurveFitter *)
QwtCurveFitter * curveFitter () const
virtual void drawSeries (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF
&canvasRect, int from, int to) const
virtual QwtGraphiclegendIcon (int index, const QSizeF &) const
ProtectedMemberFunctions
void init ()
Initialize internal members.
virtual void drawCurve (QPainter *, int style, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const
QRectF &canvasRect, int from, int to) const
Draw the line part (without symbols) of a curve interval.
virtual void drawSymbols (QPainter *, const QwtSymbol &, const QwtScaleMap &xMap, const QwtScaleMap
&yMap, const QRectF &canvasRect, int from, int to) const
virtual void drawLines (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF
&canvasRect, int from, int to) const
Draw lines.
virtual void drawSticks (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF
&canvasRect, int from, int to) const
virtual void drawDots (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF
&canvasRect, int from, int to) const
virtual void drawSteps (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF
&canvasRect, int from, int to) const
virtual void fillCurve (QPainter *, const QwtScaleMap &, const QwtScaleMap &, const QRectF &canvasRect,
QPolygonF &) const
void closePolyline (QPainter *, const QwtScaleMap &, const QwtScaleMap &, QPolygonF &) const
Complete a polygon to be a closed polygon including the area between the original polygon and the
baseline.
