![]() |
JKQTPlotter trunk/v5.0.0
an extensive Qt5+Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
|
This graph plots a series of data labels. This can be used to add number-labels to e.g. a barchart. More...
#include <jkqtpgraphlabels.h>
Public Types | |
| enum | LabelContentsDefaultType { XValueLabel , YValueLabel , XYValueLabel } |
| typedef std::function< QString(double, double, int)> | LabelGenerator |
| type of a functor that generates a label | |
| Public Types inherited from JKQTPXYGraph | |
| enum | DataSortOrder { Unsorted =0 , SortedX =1 , SortedY =2 } |
| specifies how to sort the data in a JKQTPXYGraph before drawing More... | |
| Public Types inherited from JKQTPPlotElement | |
| enum | HitTestMode { HitTestXY , HitTestXOnly , HitTestYOnly } |
| modes of operation for the function hitTest() More... | |
Public Member Functions | |
| JKQTPXYGraphLabels (const LabelGenerator &lgen, JKQTBasePlotter *parent=nullptr) | |
| class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor | |
| JKQTPXYGraphLabels (const LabelGenerator &lgen, JKQTPlotter *parent) | |
| class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor | |
| JKQTPXYGraphLabels (LabelContentsDefaultType lt, JKQTBasePlotter *parent=nullptr) | |
| class constructor, generates a JKQTPXYGraphLabels with one of the default label generator functors (x-value, y-value or x+y-values) | |
| JKQTPXYGraphLabels (LabelContentsDefaultType lt, JKQTPlotter *parent) | |
| class constructor, generates a JKQTPXYGraphLabels with one of the default label generator functors (x-value, y-value or x+y-values) | |
| virtual void | draw (JKQTPEnhancedPainter &painter) override |
| plots the graph to the plotter object specified as parent | |
| virtual void | drawKeyMarker (JKQTPEnhancedPainter &painter, const QRectF &rect) override |
| plots a key marker inside the specified rectangle rect | |
| virtual QColor | getKeyLabelColor () const override |
| returns the color to be used for the key label | |
| virtual bool | getXMinMax (double &minx, double &maxx, double &smallestGreaterZero) override |
| get the maximum and minimum x-value of the graph | |
| virtual bool | getYMinMax (double &miny, double &maxy, double &smallestGreaterZero) override |
| get the maximum and minimum y-value of the graph | |
| void | setColor (QColor c, bool setTextColor_=true, bool setFrameColor_=true) |
| set color of line and symbol | |
| void | setCustomLabelGenerator (const LabelGenerator &labgen) |
| sets a custom label geneator function of type LabelGenerator to use | |
| void | setDefaultXLabelGenerator () |
| sets the label geneator function to a default implementation, that prints the x-value only | |
| void | setDefaultXYLabelGenerator () |
| sets the label geneator function to a default implementation, that prints the x- and y-value | |
| void | setDefaultYLabelGenerator () |
| sets the label geneator function to a default implementation, that prints the y-value only | |
| Public Member Functions inherited from JKQTPXYGraph | |
| JKQTPXYGraph (JKQTBasePlotter *parent=nullptr) | |
| class constructor | |
| DataSortOrder | getDataSortOrder () const |
if !=Unsorted, the data is sorted before plotting | |
| virtual int | getKeyColumn () const |
| returns the column used as "key" for the current graph (typically this call getXColumn(), but for horizontal graphs like filled curves or barcharts it may call getYColumn() ) | |
| virtual int | getValueColumn () const |
| returns the column used as "value" for the current graph (typically this call getXColumn(), but for horizontal graphs like filled curves or barcharts it may call getYColumn() ) | |
| int | getXColumn () const |
| the column that contains the x-component of the datapoints | |
| int | getYColumn () const |
| the column that contains the y-component of the datapoints | |
| virtual double | hitTest (const QPointF &posSystem, QPointF *closestSpotSystem=nullptr, QString *label=nullptr, HitTestMode mode=HitTestXY) const override |
| Implmentation of JKQTPPlotElement::hitTest(), which searches through all graph points defined by xColumn and yColumn and returns a general x/y-label, also taking into account possibly known errors to the graphs (if it is derived from JKQTPXGraphErrorData and/or JKQTPYGraphErrorData. | |
| virtual bool | usesColumn (int column) const override |
returns true if the given column is used by the graph | |
| Public Member Functions inherited from JKQTPGraph | |
| JKQTPGraph (JKQTBasePlotter *parent=nullptr) | |
| class constructor | |
| virtual | ~JKQTPGraph ()=default |
| default wirtual destructor | |
| Public Member Functions inherited from JKQTPPlotElement | |
| JKQTPPlotElement (JKQTBasePlotter *parent=nullptr) | |
| class constructor | |
| virtual | ~JKQTPPlotElement ()=default |
| default wirtual destructor | |
| QPointF | backTransform (const QPointF &x) const |
| tool routine that back-transforms a QPointF according to the parent's transformation rules (pixels --> plot coordinate) | |
| QPointF | backTransform (double x, double y) const |
| tool routine that back-transforms a QPointF according to the parent's transformation rules (pixels --> plot coordinate) | |
| double | backtransformX (double x) const |
| tool routine that backtransforms an x-coordinate (pixels --> plot coordinate) for this plot element, uses the axis referenced in xAxisRef | |
| double | backtransformY (double y) const |
| tool routine that backtransforms a y-coordinate (pixels --> plot coordinate) for this plot element, uses the axis referenced in yAxisRef | |
| virtual void | drawOutside (JKQTPEnhancedPainter &painter, QRect leftSpace, QRect rightSpace, QRect topSpace, QRect bottomSpace) |
| plots outside the actual plot field of view (e.g. color bars, scale bars, ...) | |
| QImage | generateKeyMarker (QSize size=QSize(16, 16)) |
| returns an image with a key marker inside | |
| virtual void | getOutsideSize (JKQTPEnhancedPainter &painter, int &leftSpace, int &rightSpace, int &topSpace, int &bottomSpace) |
| if the graph plots outside the actual plot field of view (e.g. color bars, scale bars, ...) | |
| JKQTBasePlotter * | getParent () |
| returns the parent painter class | |
| const JKQTBasePlotter * | getParent () const |
| returns the parent painter class | |
| QString | getTitle () const |
| returns the the title of the plot | |
| const JKQTPCoordinateAxis * | getXAxis () const |
| returns the actual x-Axis-object from the parent plotter, referenced in xAxisRef | |
| JKQTPCoordinateAxisRef | getXAxisRef () const |
| indicates which coordinate axis to use for coordinate transforms in x-direction | |
| const JKQTPCoordinateAxis * | getYAxis () const |
| returns the actual y-Axis-object from the parent plotter, referenced in yAxisRef | |
| JKQTPCoordinateAxisRef | getYAxisRef () const |
| indicates which coordinate axis to use for coordinate transforms in y-direction | |
| bool | isHighlighted () const |
| returns whether the graph is shown in a highlighted style in the plot | |
| bool | isVisible () const |
| returns whether the graph is visible in the plot | |
| void | setAxes (JKQTPCoordinateAxisRef ref) |
| set the coordinate axes to use for this plot element | |
| virtual void | setParent (JKQTBasePlotter *parent) |
| sets the parent painter class | |
| virtual void | setParent (JKQTPlotter *parent) |
| sets the parent painter class | |
| void | setXAxis (JKQTPCoordinateAxisRef ref) |
| indicates which coordinate axis to use for coordinate transforms in x-direction | |
| void | setYAxis (JKQTPCoordinateAxisRef ref) |
| indicates which coordinate axis to use for coordinate transforms in y-direction | |
| QPointF | transform (const QPointF &x) const |
| tool routine that transforms a QPointF according to the parent's transformation rules (plot coordinate --> pixels) | |
| QPolygonF | transform (const QPolygonF &x) const |
| tool routine that transforms a QPolygonF according to the parent's transformation rules (plot coordinate --> pixels) | |
| QPointF | transform (double x, double y) const |
| tool routine that transforms a QPointF according to the parent's transformation rules (plot coordinate --> pixels) | |
| QPainterPath | transformToLinePath (const QPolygonF &x) const |
| tool routine that transforms a QPolygonF according to the parent's transformation rules and returns a (non-closed) path consisting of lines (plot coordinate --> pixels) | |
| QVector< double > | transformX (const QVector< double > &x) const |
| transform all x-coordinates in a vector x | |
| double | transformX (double x) const |
| tool routine that transforms an x-coordinate (plot coordinate --> pixels) for this plot element, uses the axis referenced in xAxisRef | |
| QVector< double > | transformY (const QVector< double > &x) const |
| transform all y-coordinates in a vector x | |
| double | transformY (double y) const |
| tool routine that transforms a y-coordinate (plot coordinate --> pixels) for this plot element, uses the axis referenced in yAxisRef | |
| Public Member Functions inherited from JKQTPGraphValueLabelStyleMixin | |
| JKQTPGraphValueLabelStyleMixin (JKQTBasePlotter *parent) | |
| class constructor | |
| virtual | ~JKQTPGraphValueLabelStyleMixin () |
| void | drawLabel (JKQTPEnhancedPainter &painter, const QPointF &xDataPixel, const QPointF &xData, const QString &contents, JKQTBasePlotter *parent, double baselineX, double baselineY) const |
| draws a label, including its box | |
| bool | drawsLabelBoxFrame () const |
| indicates whether to draw a frame around the box * | |
| double | getLabelBoxRounding () const |
| rounding radius of the box rectangle (<=0 -> no rounded rectangle) [pt] | |
| JKQTPGraphLabelBoxType | getLabelBoxType () const |
| type or style of the box surrounding the label text | |
| double | getLabelOffset () const |
| offset of the box rectangle to the actual data point location [pt], this is used for simple boxes and is a rather close distance (e.g. JKQTPGLSimpleBox) | |
| double | getLabelOffsetWithConnector () const |
| offset of the box rectangle to the actual data point location [pt], this variant is used when a visible connector is shown (e.g. JKQTPGLSimpleBoxAndLine) | |
| JKQTPGraphLabelPosition | getLabelPosition () const |
| position of the label | |
| double | getLabelXPadding () const |
| padding in x-direction between label and surrounding box [pt] | |
| double | getLabelYPadding () const |
| padding in y-direction between label and surrounding box [pt] * | |
| double | getUsedLabelOffset () const |
| determines, whether to use getLabelOffset() or getLabelOffsetWithConnector() (or something else) and returns it | |
| void | initValueLabelStyle (JKQTBasePlotter *parent, int &parentPlotStyle, JKQTPPlotStyleType styletype=JKQTPPlotStyleType::Default) |
| initiaize the fill style (from the parent plotter) | |
| bool | isLabelPositioningGrowingInX () const |
determines whether a label is positioned left of the mininmum, or right of the maxinmum datapoint (true ) | |
| bool | isLabelPositioningGrowingInY () const |
determines whether a label is positioned below the mininmum, or above the maxinmum datapoint (true ) | |
| void | setDrawLabelBoxFrame (bool r) |
| indicates whether to draw a frame around the box * | |
| void | setLabelBoxRounding (double r) |
| rounding radius of the box rectangle (<=0 -> no rounded rectangle) [pt] | |
| void | setLabelBoxType (JKQTPGraphLabelBoxType r) |
| type or style of the box surrounding the label text | |
| void | setLabelOffset (double r) |
| offset of the box rectangle to the actual data point location [pt], this is used for simple boxes and is a rather close distance (e.g. JKQTPGLSimpleBox) | |
| void | setLabelOffsetWithConnector (double r) |
| offset of the box rectangle to the actual data point location [pt], this variant is used when a visible connector is shown (e.g. JKQTPGLSimpleBoxAndLine) | |
| void | setLabelPosition (JKQTPGraphLabelPosition r) |
| position of the label | |
| void | setLabelXPadding (double r) |
| padding in x-direction between label and surrounding box [pt] | |
| void | setLabelYPadding (double r) |
| padding in y-direction between label and surrounding box [pt] * | |
| Public Member Functions inherited from JKQTPGraphTextStyleMixin | |
| JKQTPGraphTextStyleMixin (JKQTBasePlotter *parent) | |
| class constructor | |
| virtual | ~JKQTPGraphTextStyleMixin () |
| QColor | getTextColor () const |
| set the color of the text | |
| QString | getTextFontName () const |
| get the base font name of text | |
| double | getTextFontSize () const |
| get the base font size of text | |
| void | initTextStyle (JKQTBasePlotter *parent, int &parentPlotStyle, JKQTPPlotStyleType styletype=JKQTPPlotStyleType::Default) |
| initiaize the fill style (from the parent plotter) | |
| void | setTextColor (const QColor &__value) |
| set the color of the text | |
| void | setTextColor (const QColor &__value, double alpha) |
| set the color of the text | |
| void | setTextFontName (const QString &__value) |
| set the base font name of text | |
| void | setTextFontSize (double __value) |
| set the base font size of text | |
| Public Member Functions inherited from JKQTPGraphLineStyleMixin | |
| JKQTPGraphLineStyleMixin () | |
| class constructor | |
| virtual | ~JKQTPGraphLineStyleMixin () |
| QColor | getHighlightingLineColor () const |
| get the color of the graph line when highlighted | |
| QPen | getHighlightingLinePen (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const |
| constructs a QPen from the line styling properties | |
| QPen | getHighlightingLinePenForRects (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const |
| constructs a QPen from the line styling properties, suitable for drawing rectangle with sharp corners | |
| QPen | getKeyLinePen (JKQTPEnhancedPainter &painter, const QRectF &rect, JKQTBasePlotter *parent) const |
| constructs a QPen from the line styling properties, but uses getKeyLineWidthPx() for the width, i.e. constructs a pen for drawing lines in key-symbols | |
| double | getKeyLineWidthPx (JKQTPEnhancedPainter &painter, const QRectF &keyRect, const JKQTBasePlotter *parent) const |
| returns the linewidth for drawing lines in a key entry with keyRect for the symbol, using painter and parent . | |
| QBrush | getLineBrush () const |
| gets the brush used to fill the line area | |
| Qt::PenCapStyle | getLineCapStyle () const |
| gets the cap style | |
| QColor | getLineColor () const |
| get the color of the graph line | |
| qreal | getLineDashOffset () const |
| returns the dash offset for a custom dash style | |
| QVector< qreal > | getLineDashPattern () const |
| gets the dash pattern for a custom dash style | |
| Qt::PenJoinStyle | getLineJoinStyle () const |
| returns the join style | |
| QPen | getLinePen (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const |
| constructs a QPen from the line styling properties | |
| QPen | getLinePenForRects (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const |
| constructs a QPen from the line styling properties, suitable for drawing rectangles with sharp edges | |
| Qt::PenStyle | getLineStyle () const |
| get the style of the graph line | |
| double | getLineWidth () const |
| get the line width of the graph line (in pt) | |
| void | initLineStyle (JKQTBasePlotter *parent, int &parentPlotStyle, JKQTPPlotStyleType styletype=JKQTPPlotStyleType::Default) |
| initiaize the line style (from the parent plotter) | |
| void | setHighlightingLineColor (const QColor &__value) |
| set the color of the graph line when highlighted | |
| void | setHighlightingLineColor (const QColor &__value, double alpha) |
| set the color of the graph line when highlighted | |
| void | setLineBrush (const QBrush &style) |
| sets the brush used to fill the line area | |
| void | setLineCapStyle (Qt::PenCapStyle style) |
| sets the cap style | |
| void | setLineColor (const QColor &__value) |
| set the color of the graph line | |
| void | setLineColor (const QColor &__value, double alpha) |
| set the color of the graph line | |
| void | setLineColorInvertedFrom (QColor __noninvertedColor) |
| sets the line-color as an inverted version of the given color | |
| void | setLineDashOffset (qreal offset) |
| sets the dash offset for a custom dash style | |
| void | setLineDashPattern (const QVector< qreal > &pattern) |
| sets the dash pattern for a custom dash style | |
| void | setLineJoinStyle (Qt::PenJoinStyle style) |
| sets the join style | |
| void | setLineStyle (Qt::PenStyle __value) |
| set the style of the graph line | |
| void | setLineWidth (double __value) |
| set the line width of the graph line (in pt) | |
| Public Member Functions inherited from JKQTPGraphFillStyleMixin | |
| JKQTPGraphFillStyleMixin () | |
| class constructor | |
| virtual | ~JKQTPGraphFillStyleMixin () |
| QBrush | getFillBrush (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const |
| constructs a QBrush from the graph fill styling properties | |
| QColor | getFillColor () const |
| set the color of the graph filling | |
| const QGradient * | getFillGradient () const |
| get the gradient object of the graph filling | |
| Qt::BrushStyle | getFillStyle () const |
| get the fill style of the graph | |
| QPixmap | getFillTexture () const |
| set the color of the graph filling | |
| QImage | getFillTextureImage () const |
| set the color of the graph filling | |
| void | initFillStyle (JKQTBasePlotter *parent, int &parentPlotStyle, JKQTPPlotStyleType styletype=JKQTPPlotStyleType::Default) |
| initiaize the fill style (from the parent plotter) | |
| void | initFillStyleInvertedColor (JKQTPGraphFillStyleMixin *other) |
| initiaize the fill style from another JKQTPGraphFillStyleMixin other by inverting its fill color | |
| void | setFillBrush (const QBrush &b) |
| sets a fill brush (overwrites all internal properties!) | |
| void | setFillColor (const QColor &__value) |
| set the color of the graph filling | |
| void | setFillColor (const QColor &__value, double alpha) |
| set the color of the graph filling | |
| void | setFillGradient (const QGradient &__value) |
| set the filling of the graph to a gradient and sets fill style to a gradient setting | |
| void | setFillStyle (Qt::BrushStyle __value) |
| set the fill style of the graph | |
| void | setFillTexture (const QImage &__value) |
| set the color of the graph filling and sets fill style to Qt::TexturePattern | |
| void | setFillTexture (const QPixmap &__value) |
| set the color of the graph filling and sets fill style to Qt::TexturePattern | |
| void | setFillTransform (const QTransform &b) |
| sets a fill transformation | |
| Public Member Functions inherited from JKQTPXYLabelsGeneratorMixin | |
| JKQTPXYLabelsGeneratorMixin () | |
| class constructor | |
| virtual | ~JKQTPXYLabelsGeneratorMixin () |
| double | getXBelowIsZero () const |
| x-values below this value are treated as exactly 0 | |
| QString | getXDateTimeFormat () const |
| format string for datetime -> string conversion of x-values | |
| JKQTPGraphLabelConverterType | getXDefaultConverter () const |
| type of number to string conversion for x-values | |
| int | getXDefaultPrecision () const |
| default precision for x-labels | |
| double | getXMaxNoExponent () const |
| x-values above this value will be shown in exponent notation, below in decimal notation | |
| double | getXMinNoExponent () const |
| x-values below this value will be shown in exponent notation, above in decimal notation | |
| QString | getXValueLabelFormat () const |
format string for the x-label, use %1 as placeholder for the numeric value | |
| QString | getXYValueLabelFormat () const |
format string for the x/y-label, use %1 as placeholder for the numeric value of x and %2 for y | |
| double | getYBelowIsZero () const |
| y-values below this value are treated as exactly 0 | |
| QString | getYDateTimeFormat () const |
| format string for datetime -> string conversion of y-value | |
| JKQTPGraphLabelConverterType | getYDefaultConverter () const |
| type of number to string conversion for y-values | |
| int | getYDefaultPrecision () const |
| default precision for x-labels | |
| double | getYMaxNoExponent () const |
| y-values above this value will be shown in exponent notation, below in decimal notation | |
| double | getYMinNoExponent () const |
| y-values below this value will be shown in exponent notation, above in decimal notation | |
| QString | getYValueLabelFormat () const |
format string for the y-label, use %1 as placeholder for the numeric value | |
| void | setXBelowIsZero (double v) |
| x-values below this value are treated as exactly 0 | |
| void | setXDateTimeFormat (const QString &v) |
| format string for datetime -> string conversion of x-values | |
| void | setXDefaultConverter (JKQTPGraphLabelConverterType v) |
| type of number to string conversion for x-values | |
| void | setXDefaultPrecision (int v) |
| default precision for x-labels | |
| void | setXMaxNoExponent (double v) |
| x-values above this value will be shown in exponent notation, below in decimal notation | |
| void | setXMinNoExponent (double v) |
| x-values below this value will be shown in exponent notation, above in decimal notation | |
| void | setXValueLabelFormat (const QString &v) |
format string for the x-label, use %1 as placeholder for the numeric value | |
| void | setXYValueLabelFormat (const QString &v) |
format string for the x/y-label, use %1 as placeholder for the numeric value of x and %2 for y | |
| void | setYBelowIsZero (double v) |
| y-values below this value are treated as exactly 0 | |
| void | setYDateTimeFormat (const QString &v) |
| format string for datetime -> string conversion of y-value | |
| void | setYDefaultConverter (JKQTPGraphLabelConverterType v) |
| type of number to string conversion for y-values | |
| void | setYDefaultPrecision (int v) |
| default precision for x-labels | |
| void | setYMaxNoExponent (double v) |
| y-values above this value will be shown in exponent notation, below in decimal notation | |
| void | setYMinNoExponent (double v) |
| y-values below this value will be shown in exponent notation, above in decimal notation | |
| void | setYValueLabelFormat (const QString &v) |
format string for the y-label, use %1 as placeholder for the numeric value | |
Protected Member Functions | |
| QString | generateLabel (double x, double y, int index) const |
| generates the label at position (x , y ) and at the given data index | |
| Protected Member Functions inherited from JKQTPXYGraph | |
| int | getDataIndex (int i) const |
| returns the index of the i-th datapoint (where i is an index into the SORTED datapoints) | |
| virtual bool | getIndexRange (int &imin, int &imax) const |
| determines the range of row indexes available in the data columns of this graph | |
| virtual void | intSortData () |
| sorts data according to the specified criterion in sortData ... The result is stored as a index-map in sorted Indices | |
| Protected Member Functions inherited from JKQTPGraph | |
| virtual void | drawErrorsAfter (JKQTPEnhancedPainter &) |
| this function is used to plot error inidcators after plotting the graphs. | |
| virtual void | drawErrorsBefore (JKQTPEnhancedPainter &) |
| this function is used to plot error inidcators before plotting the graphs. | |
| bool | getDataMinMax (int column, double &minx, double &maxx, double &smallestGreaterZero) |
| get the maximum and minimum value of the given column | |
| Protected Member Functions inherited from JKQTPPlotElement | |
| void | addHitTestData (const HitTestLocation &loc) |
| clear the internal datastore for hitTest() | |
| void | addHitTestData (const QPointF &pos_, const QString &label_) |
| clear the internal datastore for hitTest() | |
| void | addHitTestData (const QPointF &pos_, int index_, const QString &label_) |
| clear the internal datastore for hitTest() | |
| void | addHitTestData (const QPointF &pos_, int index_=-1, const JKQTPDatastore *datastore=nullptr) |
| clear the internal datastore for hitTest(), this variant uses formatHitTestDefaultLabel() to auto-generate the label | |
| void | addHitTestData (double x_, double y_, const QString &label_) |
| add a new point on the graph to the internal datastore for hitTest() | |
| void | addHitTestData (double x_, double y_, int index_, const QString &label_) |
| clear the internal datastore for hitTest() | |
| void | addHitTestData (double x_, double y_, int index_=-1, const JKQTPDatastore *datastore=nullptr) |
| add a new point on the graph to the internal datastore for hitTest(), this variant uses formatHitTestDefaultLabel() to auto-generate the label | |
| void | clearHitTestData () |
| clear the internal datastore for hitTest() | |
| virtual QString | formatHitTestDefaultLabel (double x, double y, int index=-1, const JKQTPDatastore *datastore=nullptr) const |
| tool-function for hitTest(), which formats a default label, taking into account the x- and y-position (both provided) and optionally the errors of these positions. | |
| void | reserveHitTestData (int points) |
| reserve list entries for up to points graph points in the internal datastore for hitTest() | |
| QString | xFloatToString (double v, int past_comma=-1) const |
| converts a x-value v into a string, taking into account the type of x-axis | |
| QString | yFloatToString (double v, int past_comma=-1) const |
| converts a x-value v into a string, taking into account the type of x-axis | |
| Protected Member Functions inherited from JKQTPGraphValueLabelStyleMixin | |
| LabelGeometry | calcLabelGeometry (JKQTPEnhancedPainter &painter, const QPointF &xDataPixel, const QPointF &xData, const QString &contents, JKQTBasePlotter *parent, double baselineX, double baselineY) const |
| calculate everything that is necessary to draw a label, including its box | |
| Protected Member Functions inherited from JKQTPXYLabelsGeneratorMixin | |
| QString | generateDefaultXLabel (double x, double y, int index) const |
| default label generator for x-value only | |
| QString | generateDefaultXYLabel (double x, double y, int index) const |
| default label generator for x- and y-value | |
| QString | generateDefaultYLabel (double x, double y, int index) const |
| default label generator for y-value only | |
| QString | xValToString (double x) const |
| converts x to a string, using several of the formatting properties set in this class for x-values | |
| QString | yValToString (double y) const |
| converts y to a string, using several of the formatting properties set in this class for y-values | |
Private Attributes | |
| LabelGenerator | m_labelGenerator |
| generate the label for the datapoint at location (x , y ) and being the index -th value in the columns | |
Additional Inherited Members | |
| Public Slots inherited from JKQTPXYGraph | |
| void | setDataSortOrder (DataSortOrder __value) |
if !=Unsorted, the data is sorted before plotting | |
| void | setDataSortOrder (int __value) |
if !=Unsorted, the data is sorted before plotting | |
| virtual void | setKeyColumn (int __value) |
| sets the column used as "key" for the current graph (typically this call setXColumn(), but for horizontal graphs like filled curves or barcharts it may call setYColumn() ) | |
| virtual void | setValueColumn (int __value) |
| sets the column used as "value" for the current graph (typically this call setXColumn(), but for horizontal graphs like filled curves or barcharts it may call setYColumn() ) | |
| void | setXColumn (int __value) |
| the column that contains the x-component of the datapoints | |
| void | setXColumn (size_t __value) |
| the column that contains the x-component of the datapoints | |
| void | setXYColumns (int xCol, int yCol) |
| sets xColumn and yColumn at the same time | |
| void | setXYColumns (QPair< int, int > xyColPair) |
| sets xColumn and yColumn at the same time | |
| void | setXYColumns (QPair< size_t, size_t > xyColPair) |
| sets xColumn and yColumn at the same time | |
| void | setXYColumns (size_t xCol, size_t yCol) |
| sets xColumn and yColumn at the same time | |
| void | setYColumn (int __value) |
| the column that contains the y-component of the datapoints | |
| void | setYColumn (size_t __value) |
| the column that contains the y-component of the datapoints | |
| Public Slots inherited from JKQTPPlotElement | |
| void | setHighlighted (bool __value) |
| sets whether the graph is drawn in a highlighted style in the plot | |
| virtual void | setTitle (const QString &__value) |
| sets the title of the plot (for display in key!). | |
| void | setVisible (bool __value) |
| sets whether the graph is visible in the plot | |
| Static Protected Member Functions inherited from JKQTPXYLabelsGeneratorMixin | |
| static QString | valToString (double x, JKQTPGraphLabelConverterType m_xDefaultConverter, int m_xDefaultPrecision, double m_xBelowIsZero, double m_xMinNoExponent, double m_xMaxNoExponent, const QString &m_xDateTimeFormat) |
| converts x to a QString, using the provided options | |
| Protected Attributes inherited from JKQTPXYGraph | |
| QVector< int > | sortedIndices |
| this array contains the order of indices, in which to access the data in the data columns | |
| Protected Attributes inherited from JKQTPPlotElement | |
| QVector< HitTestLocation > | m_hitTestData |
| dataset with graph-points and associated data from the function hitTest() | |
| JKQTBasePlotter * | parent |
| the plotter object this object belongs to | |
| int | parentPlotStyle |
| internal storage for the used parent plot style | |
| Properties inherited from JKQTPXYGraph | |
| DataSortOrder | sortData |
if !=Unsorted, the data is sorted before plotting | |
| int | xColumn |
| the column that contains the x-component of the datapoints | |
| int | yColumn |
| the column that contains the y-component of the datapoints | |
| Properties inherited from JKQTPPlotElement | |
| bool | highlighted |
| indicates whether the graph is shown in a "highlghted" in the plot | |
| QString | title |
| title of the plot (for display in key!). If no title is supplied, no key entry is drawn. | |
| bool | visible |
| indicates whether the graph is visible in the plot | |
| JKQTPCoordinateAxisRef | xAxisRef |
| indicates which coordinate axis to use for coordinate transforms in x-direction | |
| JKQTPCoordinateAxisRef | yAxisRef |
| indicates which coordinate axis to use for coordinate transforms in y-direction | |
| Properties inherited from JKQTPGraphValueLabelStyleMixin | |
| bool | drawLabelBoxFrame |
| double | labelBoxRounding |
| JKQTPGraphLabelBoxType | labelBoxType |
| double | labelOffset |
| double | labelOffsetWithConnector |
| JKQTPGraphLabelPosition | labelPosition |
| double | labelXPadding |
| double | labelYPadding |
| Properties inherited from JKQTPGraphTextStyleMixin | |
| QColor | textColor |
| QString | textFontName |
| double | textFontSize |
| Properties inherited from JKQTPGraphLineStyleMixin | |
| QColor | highlightingLineColor |
| QColor | lineColor |
| Qt::PenStyle | lineStyle |
| double | lineWidth |
| Properties inherited from JKQTPGraphFillStyleMixin | |
| QColor | fillColor |
| Qt::BrushStyle | fillStyle |
This graph plots a series of data labels. This can be used to add number-labels to e.g. a barchart.
Sometimes it is necessary to display the numeric value of a datapoint right in the plot. To achieve this, JKQTPXYGraphLabels is provided, which draws a text-label next to each datapoint in a series of x- and y-values (thus it is derived from JKQTPXYGraph). Each label is drawn with a little offset from the actual datapoint. Under each label, a small (stylable) box is drawn, which is by default simply the same color as the background color of complete plot, but with transparency, thus providing a certain level of contrast to the text, even if drawn above other plot elements. Use the properties of the parent mix-in class JKQTPGraphValueLabelStyleMixin to style the text and the box.
Here is an example of labels together with a bars and lines chart:
Also other styles of boxes are available:
To achieve this, use code like this:
The text shown in the label is determined by a functor of type JKQTPXYGraphLabels::LabelGenerator that calculates it from the labels position and data-index. This functor can be custimized (set setCustomLabelGenerator() or the matching constructor), or it may be one of three default immplementations, that display:
The default generators can be further customized with a series of properties on how to format their output:
"$%1$" or "$%1/%2$" , but you can set them to any string (%1 / %2 is replaced by the string-converted x-/y-values) and e.g. add a prefix, like setXValueLabelFormat("$x=%1$"). You can use any LaTeX-markup that is allowed by JKQTMathText here!| typedef std::function<QString(double,double,int)> JKQTPXYGraphLabels::LabelGenerator |
type of a functor that generates a label
| Enumerator | |
|---|---|
| XValueLabel | generates a label with the x-coordinate only, calls setDefaultXLabelGenerator() |
| YValueLabel | generates a label with the y-coordinate only, calls setDefaultYLabelGenerator() |
| XYValueLabel | generates a label with the x- and y-coordinate, calls setDefaultXYLabelGenerator() |
|
explicit |
class constructor, generates a JKQTPXYGraphLabels with one of the default label generator functors (x-value, y-value or x+y-values)
| JKQTPXYGraphLabels::JKQTPXYGraphLabels | ( | LabelContentsDefaultType | lt, |
| JKQTPlotter * | parent ) |
class constructor, generates a JKQTPXYGraphLabels with one of the default label generator functors (x-value, y-value or x+y-values)
| JKQTPXYGraphLabels::JKQTPXYGraphLabels | ( | const LabelGenerator & | lgen, |
| JKQTBasePlotter * | parent = nullptr ) |
class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor
| JKQTPXYGraphLabels::JKQTPXYGraphLabels | ( | const LabelGenerator & | lgen, |
| JKQTPlotter * | parent ) |
class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor
|
overridevirtual |
plots the graph to the plotter object specified as parent
Implements JKQTPPlotElement.
|
overridevirtual |
plots a key marker inside the specified rectangle rect
Implements JKQTPPlotElement.
|
protected |
generates the label at position (x , y ) and at the given data index
|
overridevirtual |
returns the color to be used for the key label
Implements JKQTPPlotElement.
|
overridevirtual |
get the maximum and minimum x-value of the graph
The result is given in the two parameters which are call-by-reference parameters!
| [out] | minx | minimal x-value used in the graph |
| [out] | maxx | maximal x-value used in the graph |
| [out] | smallestGreaterZero | the smalles x-value in the graph, which is larger than 0 (this is used in auto-sizing for logarithmic axes) |
true on success, i.e. if there were datapoints in the plot, or false on failure (e.g. when the graph is empty) Reimplemented from JKQTPXYGraph.
|
overridevirtual |
get the maximum and minimum y-value of the graph
The result is given in the two parameters which are call-by-reference parameters!
| [out] | miny | minimal y-value used in the graph |
| [out] | maxy | maximal y-value used in the graph |
| [out] | smallestGreaterZero | the smalles y-value in the graph, which is larger than 0 (this is used in auto-sizing for logarithmic axes) |
true on success, i.e. if there were datapoints in the plot, or false on failure (e.g. when the graph is empty) Reimplemented from JKQTPXYGraph.
| void JKQTPXYGraphLabels::setColor | ( | QColor | c, |
| bool | setTextColor_ = true, | ||
| bool | setFrameColor_ = true ) |
set color of line and symbol
| void JKQTPXYGraphLabels::setCustomLabelGenerator | ( | const LabelGenerator & | labgen | ) |
sets a custom label geneator function of type LabelGenerator to use
| void JKQTPXYGraphLabels::setDefaultXLabelGenerator | ( | ) |
sets the label geneator function to a default implementation, that prints the x-value only
The generator uses m_xValueLabelFormat, m_xDefaultConverter, ...
| void JKQTPXYGraphLabels::setDefaultXYLabelGenerator | ( | ) |
sets the label geneator function to a default implementation, that prints the x- and y-value
The generator uses m_xyValueLabelFormat, m_xDefaultConverter, m_yDefaultConverter, ...
| void JKQTPXYGraphLabels::setDefaultYLabelGenerator | ( | ) |
sets the label geneator function to a default implementation, that prints the y-value only
The generator uses m_yValueLabelFormat, m_yDefaultConverter, ...
|
private |
generate the label for the datapoint at location (x , y ) and being the index -th value in the columns