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
Loading...
Searching...
No Matches

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>

Inheritance diagram for JKQTPXYGraphLabels:
[legend]
Collaboration diagram for JKQTPXYGraphLabels:
[legend]

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, ...)
 
JKQTBasePlottergetParent ()
 returns the parent painter class
 
const JKQTBasePlottergetParent () const
 returns the parent painter class
 
QString getTitle () const
 returns the the title of the plot

 
const JKQTPCoordinateAxisgetXAxis () 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 JKQTPCoordinateAxisgetYAxis () 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< HitTestLocationm_hitTestData
 dataset with graph-points and associated data from the function hitTest()
 
JKQTBasePlotterparent
 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
 

Detailed Description

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:

// create barchart and line-chart to display the data:
graph1->setBarPositionColumn(columnX);
graph1->setBarHeightColumn(columnY);
graph2->setXColumn(columnX);
graph2->setYColumn(columnY);
// create the data labels:
graphLabels->setXColumn(graph1->getXColumn());
graphLabels->setYColumn(graph1->getYColumn());
// add the graphs to the plot, so it is actually displayed
plot.addGraph(graph1);
plot.addGraph(graph2);
plot.addGraph(graphLabels);
void setBarHeightColumn(int column)
returns xColumn or yColumn, whichever is used for the height of the bars (depending on whether the ba...
void setBarPositionColumn(int column)
returns xColumn or yColumn, whichever is used for the position of the bars (depending on whether the ...
This implements a vertical bar graph with bars between and .
Definition jkqtpbarchart.h:51
void setLabelPosition(JKQTPGraphLabelPosition r)
position of the label
void setYColumn(int __value)
the column that contains the y-component of the datapoints
void setXColumn(int __value)
the column that contains the x-component of the datapoints
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
This graph plots a series of data labels. This can be used to add number-labels to e....
Definition jkqtpgraphlabels.h:103
@ YValueLabel
generates a label with the y-coordinate only, calls setDefaultYLabelGenerator()
Definition jkqtpgraphlabels.h:108
This implements xy line plots. This also alows to draw symbols at the data points.
Definition jkqtplines.h:61
@ JKQTPGLabelAwayFromXAxis
all labels pointing away from the x-axis
Definition jkqtpgraphlabelstylemixin.h:50

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:

See also
Example (JKQTPlotter): Simple Graph Labels Example

Member Typedef Documentation

◆ LabelGenerator

typedef std::function<QString(double,double,int)> JKQTPXYGraphLabels::LabelGenerator

type of a functor that generates a label

Member Enumeration Documentation

◆ LabelContentsDefaultType

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()

Constructor & Destructor Documentation

◆ JKQTPXYGraphLabels() [1/4]

JKQTPXYGraphLabels::JKQTPXYGraphLabels ( LabelContentsDefaultType  lt,
JKQTBasePlotter parent = nullptr 
)
explicit

class constructor, generates a JKQTPXYGraphLabels with one of the default label generator functors (x-value, y-value or x+y-values)

◆ JKQTPXYGraphLabels() [2/4]

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() [3/4]

JKQTPXYGraphLabels::JKQTPXYGraphLabels ( const LabelGenerator lgen,
JKQTBasePlotter parent = nullptr 
)

class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor

◆ JKQTPXYGraphLabels() [4/4]

JKQTPXYGraphLabels::JKQTPXYGraphLabels ( const LabelGenerator lgen,
JKQTPlotter parent 
)

class constructor, generates a JKQTPXYGraphLabels with a custom LabelGenerator functor

Member Function Documentation

◆ draw()

virtual void JKQTPXYGraphLabels::draw ( JKQTPEnhancedPainter painter)
overridevirtual

plots the graph to the plotter object specified as parent

Implements JKQTPPlotElement.

◆ drawKeyMarker()

virtual void JKQTPXYGraphLabels::drawKeyMarker ( JKQTPEnhancedPainter painter,
const QRectF &  rect 
)
overridevirtual

plots a key marker inside the specified rectangle rect

Implements JKQTPPlotElement.

◆ generateLabel()

QString JKQTPXYGraphLabels::generateLabel ( double  x,
double  y,
int  index 
) const
protected

generates the label at position (x , y ) and at the given data index

◆ getKeyLabelColor()

virtual QColor JKQTPXYGraphLabels::getKeyLabelColor ( ) const
overridevirtual

returns the color to be used for the key label

Implements JKQTPPlotElement.

◆ getXMinMax()

virtual bool JKQTPXYGraphLabels::getXMinMax ( double &  minx,
double &  maxx,
double &  smallestGreaterZero 
)
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!

Parameters
[out]minxminimal x-value used in the graph
[out]maxxmaximal x-value used in the graph
[out]smallestGreaterZerothe smalles x-value in the graph, which is larger than 0 (this is used in auto-sizing for logarithmic axes)
Returns
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.

◆ getYMinMax()

virtual bool JKQTPXYGraphLabels::getYMinMax ( double &  miny,
double &  maxy,
double &  smallestGreaterZero 
)
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!

Parameters
[out]minyminimal y-value used in the graph
[out]maxymaximal y-value used in the graph
[out]smallestGreaterZerothe smalles y-value in the graph, which is larger than 0 (this is used in auto-sizing for logarithmic axes)
Returns
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.

◆ setColor()

void JKQTPXYGraphLabels::setColor ( QColor  c,
bool  setTextColor_ = true,
bool  setFrameColor_ = true 
)

set color of line and symbol

◆ setCustomLabelGenerator()

void JKQTPXYGraphLabels::setCustomLabelGenerator ( const LabelGenerator labgen)

sets a custom label geneator function of type LabelGenerator to use

See also
m_labelGenerator, setDefaultXLabelGenerator(), setDefaultYLabelGenerator(), setDefaultXYLabelGenerator()

◆ setDefaultXLabelGenerator()

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, ...

See also
m_labelGenerator, setCustomLabelGenerator(), setDefaultXLabelGenerator(), setDefaultYLabelGenerator(), setDefaultXYLabelGenerator()

◆ setDefaultXYLabelGenerator()

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, ...

See also
m_labelGenerator, setCustomLabelGenerator(), setDefaultXLabelGenerator(), setDefaultYLabelGenerator(), setDefaultXYLabelGenerator()

◆ setDefaultYLabelGenerator()

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, ...

See also
m_labelGenerator, setCustomLabelGenerator(), setDefaultXLabelGenerator(), setDefaultYLabelGenerator(), setDefaultXYLabelGenerator()

Member Data Documentation

◆ m_labelGenerator

LabelGenerator JKQTPXYGraphLabels::m_labelGenerator
private

generate the label for the datapoint at location (x , y ) and being the index -th value in the columns


The documentation for this class was generated from the following file: