mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-25 01:51:49 +08:00
441 lines
14 KiB
Plaintext
441 lines
14 KiB
Plaintext
/*!
|
|
|
|
\defgroup jkqtptools Tool Functions and Definitions for JKQTPlotter
|
|
|
|
This group contains a set of tools that I've written over the years to enhance the
|
|
C++ standard library.
|
|
|
|
\defgroup jkqtpplotterclasses_tools Support Classes/Structs/Functions for JKQTPlotter&JKQTBasePlotter
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup tools_math Tools for Mathematical Computations & Equation Parsing
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup jkqtptools_string String Tool Functions
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup jkqtptools_qt Additional Tools for Qt
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup jkqtptools_qtwidgets Additional Widgets for Qt
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup jkqtptools_drawing Drawing Tools
|
|
\ingroup jkqtptools
|
|
|
|
\defgroup jkqtptools_debugging Debugging Tools
|
|
\ingroup jkqtptools
|
|
|
|
|
|
|
|
|
|
|
|
\defgroup jkqtplotter JKQTPlotter: Qt based Scientific Plotter Class
|
|
|
|
A Qt based plotter for 2D scientific graphs. Main Plotting widget is JKQTPlotter.
|
|
|
|
|
|
\defgroup jkqtpdatastorage Data Storage Classes/System
|
|
\ingroup jkqtplotter
|
|
|
|
The classes in this group implement a data storage system for use with the main plotter class.
|
|
Basically a table of data is generated as a set of logical columns that may be bound to different
|
|
data sources (internal or external memory arrays. Later on it is simply possible to plot graphs
|
|
using the column number and the not a link to the actual data array, as the link is stored in these
|
|
classes.
|
|
|
|
\defgroup jkqtpopencvinterface OpenCV Interfaceing Tools
|
|
\ingroup jkqtpdatastorage
|
|
|
|
Classes and functions in this group allow JKQTPlotter to directly work with <a href="https://opencv.org/">OpenCV</a> data structures.
|
|
|
|
Examples:
|
|
- \ref JKQTPlotterImagePlotOpenCV
|
|
- \ref JKQTPlotterImagePlotRGBOpenCV
|
|
.
|
|
|
|
\defgroup jkqtpplotterclasses Plotter Class & Plotter Widget
|
|
\ingroup jkqtplotter
|
|
|
|
This group contains the actual plotter classes, that implement layout management code,
|
|
coordinate system management an actual plotter widget ...
|
|
|
|
There are two main classes:
|
|
- JKQTBasePlotter is a QObject-derived class that implements all the plotting logic and drawing code. It does not implement a Qt widget though.
|
|
- JKQTPlotter is a QWidget-based class that contains a JKQTBasePlotter and uses it to draw plots onto a Qt form.
|
|
.
|
|
|
|
|
|
\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
|
|
- \ref jkqtplotter_overlays contains classes for overlay elements (lines, marker ...) that can be drawn quickly on top of a plot
|
|
.
|
|
|
|
\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 <a href="http://doc.qt.io/qt-5/qpainter.html">QPainter</a>)
|
|
- 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.
|
|
|
|
\dotfile jkqtplotter_graphhirarchy.dot
|
|
|
|
\subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs
|
|
|
|
|
|
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 JKQTPColorPaletteTools, 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_graphsgroup
|
|
|
|
\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:
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html beeswarmplot_small.png
|
|
<td> JKQTPSingleColumnSymbolsGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_symbols_and_styles_small.png
|
|
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_paramscatterplot_small.png
|
|
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_stepplots_small.png
|
|
<td> JKQTPStepHorizontalGraph, JKQTPStepVerticalGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs
|
|
\ingroup jkqtplotter_linesymbolgraphs
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html beeswarmplot_small.png
|
|
<td> JKQTPSingleColumnSymbolsGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_symbols_and_styles_small.png
|
|
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_stepplots_small.png
|
|
<td> JKQTPStepHorizontalGraph, JKQTPStepVerticalGraph
|
|
</table>
|
|
|
|
|
|
\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs
|
|
\ingroup jkqtplotter_linesymbolgraphs
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_paramscatterplot_small.png
|
|
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_filledgraphs_small.png
|
|
<td> JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph
|
|
<tr>
|
|
<td>\image html plot_filledcurvexerrorplots_small.png
|
|
<td> JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph
|
|
<tr>
|
|
<td>\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png
|
|
<td> JKQTPFilledVerticalRangeGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_functiongraphs Function Graphs
|
|
\ingroup jkqtplotter_linesymbolgraphs
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_functionplot_small.png
|
|
<td> JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs
|
|
\ingroup jkqtplotter_linesymbolgraphs
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_functionplot_small.png
|
|
<td> JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ...
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_barchart_small.png
|
|
<td> JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph
|
|
<tr>
|
|
<td>\image html barchart_error_small.png
|
|
<td> JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph
|
|
<tr>
|
|
<td>\image html JKQTPbarVerticalGraphStacked_small.png
|
|
<td> JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_impulsesplot_small.png
|
|
<td> JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph
|
|
<tr>
|
|
<td>\image html impulses_errors_small.png
|
|
<td> JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...)
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_boxplot_small.png
|
|
<td> JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_geoplots Geometric Elements (Lines, Rectangles, ...)
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html symbol_symbol_filled_diamond.png
|
|
<td> JKQTPGeoSymbol
|
|
<tr>
|
|
<td>\image html geo_text_small.png
|
|
<td> JKQTPGeoText
|
|
<tr>
|
|
<td>\image html geo_line_small.png
|
|
<td> JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines
|
|
<tr>
|
|
<td>\image html geo_rect_small.png
|
|
<td> JKQTPGeoRectangle
|
|
<tr>
|
|
<td>\image html geo_polygon_small.png
|
|
<td> JKQTPGeoPolygon
|
|
<tr>
|
|
<td>\image html geo_ellipse_small.png
|
|
<td> JKQTPGeoEllipse
|
|
<tr>
|
|
<td>\image html geo_arc_small.png
|
|
<td> JKQTPGeoArc
|
|
<tr>
|
|
<td>\image html geo_pie_small.png
|
|
<td> JKQTPGeoPie
|
|
<tr>
|
|
<td>\image html geo_chords_small.png
|
|
<td> JKQTPGeoChord
|
|
<tr>
|
|
<td>\image html geo_boxplot_small.png
|
|
<td> JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement
|
|
</table>
|
|
|
|
Examples:
|
|
- \ref JKQTPlotterGeometricGraphs
|
|
.
|
|
|
|
\defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...)
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html JKQTPHorizontalRange_small.png
|
|
<td> JKQTPHorizontalRange, JKQTPVerticalRange
|
|
<tr>
|
|
<td>\image html JKQTPPeakStreamGraphY_small.png
|
|
<td> JKQTPPeakStreamGraph
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_imagelots Matrix/Image Plotting
|
|
\ingroup jkqtplotter_graphsgroup
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_rgbimageplot_qt_small.png
|
|
<td> JKQTPImage
|
|
<tr>
|
|
<td>\image html JKQTPMathImageBaseModifyNone_small.png
|
|
<td> JKQTPMathImage, JKQTPColumnMathImage
|
|
<tr>
|
|
<td>\image html rgbimageplots_small.png
|
|
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
|
|
<tr>
|
|
<td>\image html overlayimage_small.png
|
|
<td> JKQTPOverlayImage
|
|
<tr>
|
|
<td>\image html overlayimageenhanced_small.png
|
|
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
|
|
<tr>
|
|
<td>\image html JKQTPContour_small.png
|
|
<td> JKQTPContour
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_imagelots_elements Matrix/Image Graphs
|
|
\ingroup jkqtplotter_imagelots
|
|
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_rgbimageplot_qt_small.png
|
|
<td> JKQTPImage
|
|
<tr>
|
|
<td>\image html JKQTPMathImageBaseModifyNone_small.png
|
|
<td> JKQTPMathImage, JKQTPColumnMathImage
|
|
<tr>
|
|
<td>\image html jkqtplotter_simpletest_rgbimageplot_opencv_small.png
|
|
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs
|
|
\ingroup jkqtplotter_imagelots
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html overlayimage_small.png
|
|
<td> JKQTPOverlayImage
|
|
<tr>
|
|
<td>\image html overlayimageenhanced_small.png
|
|
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing
|
|
\ingroup jkqtplotter_imagelots
|
|
|
|
\defgroup jkqtplotter_imagelots_contour Contour Graphs
|
|
\ingroup jkqtplotter_imagelots
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>\image html JKQTPContour_small.png
|
|
<td> JKQTPContour
|
|
</table>
|
|
|
|
\defgroup jkqtplotter_overlays Overlay Elements
|
|
\ingroup jkqtplotter_elements
|
|
|
|
<table>
|
|
<tr>
|
|
<th> Screenshot
|
|
<th> Classes
|
|
<tr>
|
|
<td>
|
|
<td> JKQTPOverlayVerticalLine, JKQTPOverlayLine
|
|
<tr>
|
|
<td>
|
|
<td> JKQTPOverlayVerticalRange
|
|
<tr>
|
|
<td>
|
|
<td> JKQTPOverlayRectangle
|
|
</table>
|
|
|
|
|
|
|
|
\defgroup jkqtpqtwidgetsttools Qt Widgets/Tools to work with JKQTPlotter
|
|
\ingroup jkqtplotter
|
|
|
|
This group assembles several Qt widgets and tool classes that are linked to JKQTPlotter/JKQTBasePlotter and allow to build advanced GUIs for these (e.g. model/view access to internal data ...)
|
|
|
|
\defgroup jkqtpgraphsmodel Qt Data Models to Access Graphs in a JKQTBasePlotter/JKQTPlotter
|
|
\ingroup jkqtpqtwidgetsttools
|
|
|
|
Data models in this group allow to access different internal data from a JKQTBasePlotter/JKQTPlotter and in part to manipulate these.
|
|
|
|
\defgroup jkqtpcomboboxes Comboboxes for Properties of JKQTBasePlotter/JKQTPlotter
|
|
\ingroup jkqtpqtwidgetsttools
|
|
|
|
This group contains several QComboBox-derived classes that can be used to select different enum-values (e.g. with JKQTPMathImageColorPaletteComboBox you can select a color-palette from JKQTPMathImageColorPalette ).
|
|
|
|
|
|
|
|
*/ |