/*! \defgroup jkqtplotter_elements Plot Elements \ingroup jkqtplotter This group assembles all classes that represent different elements of a plot (managed by JKQTBasePlotter/JKQTPlotter). There are these major subgroups: - \ref jkqtpbaseplotter_elements contains all non-graph objects, i.e. things like coordinate axes and so on - \ref jkqtplotter_graphsgroup contains the actual graph classes . \defgroup jkqtpbaseplotter_elements Basic (non-graph) Plot Elements (coordinate axes, ...) \ingroup jkqtplotter_elements This group contains some tool classes that implement basic elements of the plot (coordinate axes, key, ...). These classes are used by JKQTPlotterBase to output the plot. \defgroup jkqtplotter_graphsgroup Graph Classes \ingroup jkqtplotter_elements This group contains all classes in the JKQTPlotter library that may be used to draw a graph (i.e. a curve) onto a plot. \tableofcontents \section jkqtplotter_graphsgroup_classstructure Graph Class Structure \subsection jkqtplotter_graphsgroup_classstructure_basics Graph Classes Each type of graph is represented by another class, which has to be derived from JKQTPPlotElement. This class provides a basic virtual interface that allows JKQTPlotter to draw the graphs represented by them. This interface consists of these functions: - JKQTPPlotElement::draw() draws the graph onto a given JKQTPEnhancedPainter (derived from QPainter) - JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend - JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph - JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming) - JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming) . In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle. These are used to e.g. add color-scales to the side of the graph: - JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle - JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle . Usually if writing a new graph, one would not directly derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs. \dot digraph { // LATEX_PDF_SIZE bgcolor="transparent"; edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"]; node [fontname="FreeSans",fontsize="12"]; rankdir="LR"; { rank=same; JKQTPPlotElement [URL="\link JKQTPPlotElement"]; noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"]; JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none]; } { rank=same; JKQTPGraph [URL="\link JKQTPPlotElement"]; noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"]; JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none]; JKQTPGeometricPlotElement [URL="\link JKQTPGeometricPlotElement"]; noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"]; JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none]; JKQTPPlotAnnotationElement [URL="\link JKQTPPlotAnnotationElement"]; noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."]; JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none]; } { rank=same; JKQTPXYGraph [URL="\link JKQTPXYGraph"] noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"]; JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none]; JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"] noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"]; JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none]; JKQTPImageBase [URL="\link JKQTPImageBase"] noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"]; JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none]; } { rank=same; JKQTPXYYGraph [URL="\link JKQTPXYYGraph"] noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"]; JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none]; JKQTPXXYGraph [URL="\link JKQTPXXYGraph"] noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"]; JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none]; JKQTPXYBaselineGraph [URL="\link JKQTPXYBaselineGraph"] noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"]; JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none]; JKQTPEvaluatedFunctionGraphBase [URL="\link JKQTPEvaluatedFunctionGraphBase"] noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"]; JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none]; JKQTPMathImageBase [URL="\link JKQTPMathImageBase"] noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"]; JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none]; } { rank=same; JKQTPBarGraphBase [URL="\link JKQTPBarGraphBase"] noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"]; JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none]; JKQTPFilledCurveGraphBase [URL="\link JKQTPFilledCurveGraphBase"] noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"]; JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none]; JKQTPImpulsesGraphBase [URL="\link JKQTPImpulsesGraphBase"] noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"]; JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none]; JKQTPSpecialLineGraphBase [URL="\link JKQTPSpecialLineGraphBase"] noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"]; JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none]; JKQTPBoxplotGraphBase [URL="\link JKQTPBoxplotGraphBase"] noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"]; JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none]; JKQTPRangeBase [URL="\link JKQTPRangeBase"]; noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"]; JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none]; JKQTPBoxplotElementBase [URL="\link JKQTPBoxplotElementBase"] noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"]; JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none]; JKQTPViolinplotElementBase [URL="\link JKQTPViolinplotElementBase"] noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"]; JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none]; } JKQTPPlotElement -> JKQTPGraph JKQTPPlotElement -> JKQTPGeometricPlotElement JKQTPPlotElement -> JKQTPPlotAnnotationElement JKQTPPlotElement -> JKQTPRangeBase JKQTPPlotElement -> JKQTPBoxplotElementBase JKQTPPlotElement -> JKQTPViolinplotElementBase JKQTPGraph -> JKQTPXYGraph JKQTPGraph -> JKQTPSingleColumnGraph JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase JKQTPGraph -> JKQTPBoxplotGraphBase JKQTPXYGraph -> JKQTPXYYGraph JKQTPXYGraph -> JKQTPXXYGraph JKQTPXYGraph -> JKQTPXYBaselineGraph JKQTPXYBaselineGraph -> JKQTPBarGraphBase JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase } \enddot \subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs \see \ref jkqtplotter_basicprinciples_graphs_and_mixins In addition there are mix-in classes that are used via multiple inheritance that add additional features and properties to a graph. A prominent example are the classes for \ref jkqtplotter_basegraphserrors "error indicators". With these there are usually two variants of one type of graph: One without error indicators and one with error indicators, e.g.: - JKQTPXYLineGraph shows lines+symbols graphs made up from x/y-value pairs for each data point. - JKQTPXYLineErrorGraph extends JKQTPXYLineGraph with error indicator drawing/properties provided by JKQTPXYGraphErrors . This approach allows to keep interfaces and appearance recognizeable over different graph classes and locates the source code for a feature like error indicators in a single/in few class(es). Another example of such a class is JKQTPColorPaletteStyleAndToolsMixin, which provides functions that allow to use color palettes. It is mainly used for the \ref jkqtplotter_imagelots "Image/Matrix graphs", but also by e.g. JKQTPXYParametrizedScatterGraph. \defgroup jkqtplotter_basegraphs Baseclasses for Graphs \ingroup jkqtplotter_graphsgroup \defgroup jkqtplotter_basegraphserrors Mix-In Classes for Error Indicators \ingroup jkqtplotter_basegraphs \defgroup jkqtplotter_basegraphs_stylemixins Mix-In Classes for Plot Styling \ingroup jkqtplotter_basegraphs \defgroup jkqtplotter_linesymbolgraphs Line/Symbol Graphs \ingroup jkqtplotter_graphsgroup This group assembles graphs that show their data with symbols and optionally with connecting lines in diferent styles:
Screenshot Classes
\image html beeswarmplot_small.png JKQTPSingleColumnSymbolsGraph
\image html JKQTPXYScatterGraph_small.png JKQTPXYScatterGraph, JKQTPXYScatterErrorGraph
\image html symbols_and_styles_small.png JKQTPXYLineGraph, JKQTPXYLineErrorGraph
\image html paramscatterplot_small.png JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
\image html stepplots_small.png JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs \ingroup jkqtplotter_linesymbolgraphs
Screenshot Classes
\image html beeswarmplot_small.png JKQTPSingleColumnSymbolsGraph
\image html symbols_and_styles_small.png JKQTPXYLineGraph, JKQTPXYLineErrorGraph
\image html stepplots_small.png JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs \ingroup jkqtplotter_linesymbolgraphs
Screenshot Classes
\image html paramscatterplot_small.png JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html filledgraphs_small.png JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph
\image html JKQTPFilledCurveXErrorGraph_small.png JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph
\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png JKQTPFilledVerticalRangeGraph, JKQTPFilledHorizontalRangeGraph
\defgroup jkqtplotter_functiongraphs Function Graphs \ingroup jkqtplotter_linesymbolgraphs
Screenshot Classes
\image html functionplot_small.png JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph
\image html evalcurve_small.png JKQTPXYFunctionLineGraph
\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs \ingroup jkqtplotter_linesymbolgraphs
Screenshot Classes
\image html functionplot_small.png JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph
\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ... \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html barchart_small.png JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph
\image html barchart_error_small.png JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph
\image html JKQTPbarVerticalGraphStacked_small.png JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph
\image html impulsesplot_small.png JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph
\image html impulses_errors_small.png JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph
\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...) \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html boxplot_small.png JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph
\image html JKQTPViolinplotVerticalElement_small.png JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
\see \ref jkqtptools_math_statistics_adaptors for shortcuts to calculate statistical properties of data and then adding a plot with the results. \defgroup jkqtplotter_geoplots Geometric Elements (Lines, Rectangles, ...) \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html symbol_filled_diamond.png JKQTPGeoSymbol
\image html geo_text_small.png JKQTPGeoText
\image html geo_line_small.png JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines
\image html geo_arrows_small.png JKQTPGeoArrow
\image html geo_rect_small.png JKQTPGeoRectangle
\image html geo_polygon_small.png JKQTPGeoPolygon
\image html geo_ellipse_small.png JKQTPGeoEllipse
\image html geo_arc_small.png JKQTPGeoArc
\image html geo_pie_small.png JKQTPGeoPie
\image html geo_chords_small.png JKQTPGeoChord
Examples: - \ref JKQTPlotterGeometricGraphs . \defgroup jkqtplotter_annotations Graph Annotations \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html symbol_filled_diamond.png JKQTPGeoSymbol
\image html geo_text_small.png JKQTPGeoText
\image html JKQTPHorizontalRange_small.png JKQTPHorizontalRange, JKQTPVerticalRange
Examples: - \ref JKQTPlotterGeometricGraphs . \defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...) \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html JKQTPPeakStreamGraphY_small.png JKQTPPeakStreamGraph
\image html geo_boxplot_small.png JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement
\image html JKQTPViolinplotVerticalElement_small.png JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
\defgroup jkqtplotter_imagelots Matrix/Image Plotting \ingroup jkqtplotter_graphsgroup
Screenshot Classes
\image html rgbimageplot_qt_small.png JKQTPImage
\image html JKQTPMathImageBaseModifyNone_small.png JKQTPMathImage, JKQTPColumnMathImage
\image html rgbimageplots_small.png JKQTPRGBMathImage, JKQTPColumnRGBMathImage
\image html overlayimage_small.png JKQTPOverlayImage
\image html overlayimageenhanced_small.png JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
\image html JKQTPColumnContourPlot_small.png JKQTPContourPlot, JKQTPColumnContourPlot
\defgroup jkqtplotter_imagelots_elements Image Graphs \ingroup jkqtplotter_imagelots
Screenshot Classes
\image html rgbimageplot_qt_small.png JKQTPImage
\image html JKQTPMathImageBaseModifyNone_small.png JKQTPMathImage, JKQTPColumnMathImage
\image html rgbimageplot_cimg_small.png JKQTPRGBMathImage, JKQTPColumnRGBMathImage
\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs \ingroup jkqtplotter_imagelots
Screenshot Classes
\image html overlayimage_small.png JKQTPOverlayImage
\image html overlayimageenhanced_small.png JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing \ingroup jkqtplotter_imagelots \defgroup jkqtplotter_imagelots_tools_LUTS Tool Functions to Build Lookup-Tables for Palettes \ingroup jkqtplotter_imagelots_tools \defgroup jkqtplotter_imagelots_contour Contour Graphs (based on Image Data) \ingroup jkqtplotter_imagelots
Screenshot Classes
\image html JKQTPColumnContourPlot_small.png JKQTPContourPlot, JKQTPColumnContourPlot
*/