diff --git a/Doxyfile b/Doxyfile
index 38043acaf8..4b29207058 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -2330,12 +2330,7 @@ PREDEFINED = DOXYGEN \
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED = "
-JKQTCOMMON_LIB_EXPORT" \
- JKQTPLOTTER_LIB_EXPORT \
- JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT \
- JKQTFASTPLOTTER_LIB_EXPORT \
- JKQTMATHTEXT_LIB_EXPORT
+EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
@@ -2637,7 +2632,10 @@ DOT_PATH =
DOTFILE_DIRS = doc/dot/ \
./doc/dot/ \
doc/dot \
- ./doc/dot
+ ./doc/dot \
+ doc/dot \
+ dot \
+ ../dot
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
diff --git a/doc/dox/examples_and_tutorials.dox b/doc/dox/examples_and_tutorials.dox
index 099a8fdb88..6507b5dff6 100644
--- a/doc/dox/examples_and_tutorials.dox
+++ b/doc/dox/examples_and_tutorials.dox
@@ -9,7 +9,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
\section jkqtp_extut_jkqtplotter Examples&Tutorials for JKQTPlotter
-\subsection jkqtp_extut_plotstyles Different Plot Data Styles
+\subsection jkqtp_extut_plotstyles Examples for Different Plot Data Styles
Screenshot | Description | Notes
@@ -91,7 +91,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
|
---|
-\subsection jkqtp_extut_geometric Geometric Forms, Arrows, Annotaions ...
+\subsection jkqtp_extut_geometric Examples for Geometric Forms, Arrows, Annotaions ...
Screenshot | Description | Notes
@@ -106,7 +106,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
| `JKQTPGeoEllipse`, `JKQTPGeoArc`, `JKQTPGeoChord`, `JKQTPGeoPie`
|
---|
-\subsection jkqtp_extut_keyaxesstyles Styling the Plot, Keys, Axes, ...
+\subsection jkqtp_extut_keyaxesstyles Examples for Styling the Plot, Keys, Axes, ...
Screenshot | Description | Notes
@@ -129,7 +129,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_plotimagedata Image data Plots
+\subsection jkqtp_extut_plotimagedata Examples for Image data Plots
Screenshot | Description | Notes
@@ -170,7 +170,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_guitools GUI Tools
+\subsection jkqtp_extut_guitools Examples for GUI Tools
Screenshot | Description | Notes
@@ -183,7 +183,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
|
---|
-\subsection jkqtp_extut_guitoolslayout Layout & Styling
+\subsection jkqtp_extut_guitoolslayout Examples for Layout & Styling
Screenshot | Description | Notes
@@ -199,7 +199,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
|
---|
-\subsection jkqtp_extut_datamanagement Data Management & Statistics
+\subsection jkqtp_extut_datamanagement Examples for Data Management & Statistics
Screenshot | Description | Notes
@@ -241,7 +241,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
|
---|
-\subsection jkqtp_extut_cmake_build CMake Build System
+\subsection jkqtp_extut_cmake_build Examples for CMake Build System
Screenshot | Description | Notes
diff --git a/doc/dox/jkqtplotter.dox b/doc/dox/jkqtplotter.dox
index c4b3f80257..39424297ff 100644
--- a/doc/dox/jkqtplotter.dox
+++ b/doc/dox/jkqtplotter.dox
@@ -10,9 +10,15 @@ A Qt based plotter for 2D scientific graphs. Main Plotting widget is JKQTPlotter
This group assembles documentation of general principles and definitions behind the JKQTPlotter library.
+\defgroup jkqtplotter_classdoc Type/Class/Function Documentation
+\ingroup jkqtplotter
+
+This group assembles the documentation of the actual classes, types and functions in the JKQTPlotter library.
+
+
\defgroup jkqtpplotterclasses Plotter Class & Plotter Widget
-\ingroup jkqtplotter
+\ingroup jkqtplotter_classdoc
This group contains the actual plotter classes, that implement layout management code,
coordinate system management an actual plotter widget ...
@@ -24,10 +30,10 @@ There are two main classes:
\defgroup jkqtpplottersupprt Support Classes and Functions
-\ingroup jkqtplotter
+\ingroup jkqtplotter_classdoc
\defgroup jkqtpqtwidgetsttools Qt Widgets/Tools to work with JKQTPlotter
-\ingroup jkqtplotter
+\ingroup jkqtplotter_classdoc
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 ...)
diff --git a/doc/dox/jkqtplotter_01naming.dox b/doc/dox/jkqtplotter_01naming.dox
deleted file mode 100644
index fd167e5642..0000000000
--- a/doc/dox/jkqtplotter_01naming.dox
+++ /dev/null
@@ -1,25 +0,0 @@
-/*!
-
- \defgroup jkqtplotter_naming Conventions Naming Conventions in JKQTPlotter
- \ingroup jkqtplotter_general
-
-
- This page assembles the naming conventions behind the implementation and documentation of JKQTPlotter:
-
- - \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
- It is drawn by the invisible JKQTBasePlotter, which is typically controlled by an actual widget like JKQTPlotter
-
- plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
-
- \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also
- \ref jkqtplotter_graphsgroup_classstructure_basics )
-
- geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore,
- but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol. These elements are typically
- derived from JKQTPGeometricPlotElement
-
- \b annotation is a plot element, which is used to annotate the graphs/plot, e.g. some text. These elements are typically
- derived from JKQTPPlotAnnotationElement
-
- \b key is the legend of the plot
-
- coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
-
-
-
-
-*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_02principles.dox b/doc/dox/jkqtplotter_02principles.dox
deleted file mode 100644
index 7919fa101e..0000000000
--- a/doc/dox/jkqtplotter_02principles.dox
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
-
- \defgroup jkqtplotter_basicprinciples Basic Principles of JKQTPlotter
- \ingroup jkqtplotter_general
-
- This page documents some basic principles behind the design of the JKQTPlotter library.
-
- \tableofcontents
-
- \section jkqtplotter_basicprinciples_datastorage Datastorage
- Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore().
- This datastore can either own its data (which is done here, as we copy the data into the store
- e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
- data needs to be available as array of \c double values).
-
- In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator
- interface to access the data.
-
- \see JKQTPDatastore,
- \ref jkqtpdatastorage ,
- \ref jkqtp_extut_datamanagement
-
- \section jkqtplotter_basicprinciples_graphs_and_mixins Graphs & Mix-Ins
-
- Each graph is represented by a class derived from JKQTPPlotElement (e.g. JKQTPXYLineGraph,
- which shows data as a scatter of symbols that may (or may not) be connected by a line).
-
- There is a complete hirarchy of graph base classes, from which different graphs (or more general plot elements) are derived,
- see \ref jkqtplotter_graphsgroup_classstructure_basics .
-
-
- Constructing a graph class does not yet add it to the plotter. To add it, call JKQTBasePlotter::addGraph() / JKQTPlotter::addGraph(). Only
- after this step, the graph is displayed. You can modify the apperance of the graph (e.g. colors, name in the key ...) by setting
- properties in the graph class instance.
-
- Most graph peroperties are inserted into the graph class via mix-in classes.
- A Mixin allows to inject the same code into different classes, but does not require these classes to be in the same inheritance
- tree. The style of mix-in programming used in the JKQTPlotter library is multiple-inheritance. So a graph class is derived from
- JKQTPGraph but also has additional parent classes from \ref jkqtplotter_basegraphs_stylemixins like:
- - JKQTPGraphLineStyleMixin which provides line-styling
- - JKQTPGraphSymbolStyleMixin which provides styling for graph symbols
- - JKQTPGraphFillStyleMixin which provides fill styles
- - ...
- .
-
-
-
-*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_04plotelements.dox b/doc/dox/jkqtplotter_04plotelements.dox
deleted file mode 100644
index 955504fd1b..0000000000
--- a/doc/dox/jkqtplotter_04plotelements.dox
+++ /dev/null
@@ -1,513 +0,0 @@
-/*!
-
-
-\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
- |
-
-
-
-*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_baseplotelements.dox b/doc/dox/jkqtplotter_baseplotelements.dox
new file mode 100644
index 0000000000..2e930b1636
--- /dev/null
+++ b/doc/dox/jkqtplotter_baseplotelements.dox
@@ -0,0 +1,22 @@
+/*!
+
+
+ \defgroup jkqtplotter_general_basicplotelements Non-Graph Plot Elements
+ \ingroup jkqtplotter_general
+
+ \defgroup jkqtplotter_general_basicplotelements_coordinateaxes Coordinate Axes
+ \ingroup jkqtplotter_general_basicplotelements
+
+ \copydetails JKQTPCoordinateAxis
+
+
+
+ \defgroup jkqtplotter_general_basicplotelements_key Plot Key/Legend
+ \ingroup jkqtplotter_general_basicplotelements
+
+
+
+*/
+
+
+
diff --git a/doc/dox/jkqtplotter_datastorage.dox b/doc/dox/jkqtplotter_datastorage.dox
new file mode 100644
index 0000000000..318db99680
--- /dev/null
+++ b/doc/dox/jkqtplotter_datastorage.dox
@@ -0,0 +1,19 @@
+/*!
+ \defgroup jkqtpdatastorage Data Management and -storage
+ \ingroup jkqtplotter_general
+
+ Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore().
+ This datastore can either own its data (which is done here, as we copy the data into the store
+ e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
+ data needs to be available as array of \c double values).
+
+ In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator
+ interface to access the data.
+
+ \see \ref jkqtpdatastorage_classes and especially JKQTPDatastore,
+ \ref jkqtp_extut_datamanagement
+*/
+
+
+
+
diff --git a/doc/dox/jkqtplotter_03datastorage.dox b/doc/dox/jkqtplotter_datastorage_classdoc.dox
similarity index 90%
rename from doc/dox/jkqtplotter_03datastorage.dox
rename to doc/dox/jkqtplotter_datastorage_classdoc.dox
index aa3eb7e8cd..e40a2a04b1 100644
--- a/doc/dox/jkqtplotter_03datastorage.dox
+++ b/doc/dox/jkqtplotter_datastorage_classdoc.dox
@@ -1,7 +1,8 @@
+
/*!
-\defgroup jkqtpdatastorage Data Storage Classes/System
-\ingroup jkqtplotter
+\defgroup jkqtpdatastorage_classes Data Storage Classes
+\ingroup jkqtplotter_classdoc
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
@@ -9,10 +10,11 @@ data sources (internal or external memory arrays. Later on it is simply possible
using the column number and the not a link to the actual data array, as the link is stored in these
classes.
-\see \ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management!
+\see \ref jkqtpdatastorage
+ \ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management!
\defgroup jkqtpexternalinterfaces Interfaces To Other Libraries
-\ingroup jkqtpdatastorage
+\ingroup jkqtpdatastorage_classes
\defgroup jkqtpinterfaceopencv OpenCV Interfaceing Tools
diff --git a/doc/dox/jkqtplotter_graphs.dox b/doc/dox/jkqtplotter_graphs.dox
new file mode 100644
index 0000000000..29074776ff
--- /dev/null
+++ b/doc/dox/jkqtplotter_graphs.dox
@@ -0,0 +1,182 @@
+/*!
+
+
+ \defgroup jkqtplotter_graphsgroup_classstructure Graphs
+ \ingroup jkqtplotter_general
+
+ \section jkqtplotter_graphsgroup_classstructure_basics Graph Class Structure
+
+ 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="10",labelfontname="FreeSans",labelfontsize="10"];
+ node [fontname="FreeSans",fontsize="10"];
+ rankdir="LR";
+
+ {
+ rank=same;
+ JKQTPPlotElement [URL="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref JKQTPBarGraphBase"]
+ noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"];
+ JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none];
+
+ JKQTPFilledCurveGraphBase [URL="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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
+
+
+ \section jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs
+
+ \see \ref jkqtplotter_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.
+
+
+
+
+*/
+
+
+
diff --git a/doc/dox/jkqtplotter_naming.dox b/doc/dox/jkqtplotter_naming.dox
new file mode 100644
index 0000000000..8ee69ff702
--- /dev/null
+++ b/doc/dox/jkqtplotter_naming.dox
@@ -0,0 +1,29 @@
+/*!
+
+ \defgroup jkqtplotter_naming Conventions: Naming and Plot Construction
+ \ingroup jkqtplotter_general
+
+
+ This page assembles the naming conventions behind the implementation and documentation of JKQTPlotter (cf. the image below):
+
+ - \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
+ It is drawn by the invisible JKQTBasePlotter, which is typically controlled by an actual widget like JKQTPlotter
+
- plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
+
- \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also
+ \ref jkqtplotter_graphsgroup_classstructure_basics )
+
- geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore,
+ but a single geometric element, like a rectangle/circle/line/... These elements are typically
+ derived from JKQTPGeometricPlotElement
+
- \b annotation is a plot element, which is used to annotate the graphs/plot, e.g. some text. These elements are typically
+ derived from JKQTPPlotAnnotationElement
+
- \b key is the legend of the plot, showing a list of the graphs, each represented by a entry marker (showing the graphs color/symbol/...) and a entry title.
+
- coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale). Each coordinate axis is composed from several elements: the axis line itself, an axis label, axis ticks and corresponding tick labels (major and a second set of minor ticks in between are available)
+
- zero axis: a pair of axes through the origin \c x=0 and \c y=0 of the coordinate system
+
- \b grid a grid of horizontal/vertical lines, drawn behind the graph and providing visual guidance for the viewer of the graph. The grid is actually a part of the coordinate axes, as the lines are positioned at the same position as the axis ticks
+
- minor grid in addition to the grid, corresponding to the major axis ticks, you can add additional lines that correspond to the minor axis ticks
+
- color bar some graphs use a color-scale (e.g. images or parametrized scatter graphs). The color bar displays the used color palette of that graph. It is typically positioned besides or above the plot.
+
+
+ \image html plot_elements.png
+
+*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_plotelements.dox b/doc/dox/jkqtplotter_plotelements.dox
new file mode 100644
index 0000000000..a54886e220
--- /dev/null
+++ b/doc/dox/jkqtplotter_plotelements.dox
@@ -0,0 +1,182 @@
+/*!
+
+
+ \defgroup jkqtplotter_graphsgroup_classstructure Graphs
+ \ingroup jkqtplotter_general
+
+ \section jkqtplotter_graphsgroup_classstructure_basics Graph Class Structure
+
+ 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="10",labelfontname="FreeSans",labelfontsize="10"];
+ node [fontname="FreeSans",fontsize="10"];
+ rankdir="LR";
+
+ {
+ rank=same;
+ JKQTPPlotElement [URL="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref JKQTPBarGraphBase"]
+ noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"];
+ JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none];
+
+ JKQTPFilledCurveGraphBase [URL="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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="\ref 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
+
+ \section jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs
+
+ \see \ref jkqtplotter_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.
+
+
+
+
+*/
+
+
+
diff --git a/doc/dox/jkqtplotter_plotelements_classdoc.dox b/doc/dox/jkqtplotter_plotelements_classdoc.dox
new file mode 100644
index 0000000000..dab790cfb9
--- /dev/null
+++ b/doc/dox/jkqtplotter_plotelements_classdoc.dox
@@ -0,0 +1,346 @@
+
+
+/*!
+
+
+\defgroup jkqtplotter_elements Plot Element Classes
+\ingroup jkqtplotter_classdoc
+
+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_concretegraphs contains the actual graph classes
+.
+
+\defgroup jkqtpbaseplotter_elements Non-Graph Plot Elements
+\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_basegraphs Baseclasses for Graphs
+\ingroup jkqtplotter_elements
+
+\defgroup jkqtplotter_mixins Mix-in classes for Graphs
+\ingroup jkqtplotter_elements
+
+\defgroup jkqtplotter_basegraphserrors Mix-In Classes for Error Indicators
+\ingroup jkqtplotter_mixins
+
+\defgroup jkqtplotter_basegraphs_stylemixins Mix-In Classes for Plot Styling
+\ingroup jkqtplotter_mixins
+
+
+\defgroup jkqtplotter_concretegraphs Concrete Graph Classes
+\ingroup jkqtplotter_elements
+
+
+\defgroup jkqtplotter_linesymbolgraphs Line/Symbol Graphs
+\ingroup jkqtplotter_concretegraphs
+
+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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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_concretegraphs
+
+
+
+ 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
+ |
+
+
+
+*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_05styling.dox b/doc/dox/jkqtplotter_styling.dox
similarity index 96%
rename from doc/dox/jkqtplotter_05styling.dox
rename to doc/dox/jkqtplotter_styling.dox
index 1aa79240b0..77815fd73c 100644
--- a/doc/dox/jkqtplotter_05styling.dox
+++ b/doc/dox/jkqtplotter_styling.dox
@@ -2,7 +2,7 @@
\defgroup jkqtpplotter_styling Styling System
-\ingroup jkqtplotter
+\ingroup jkqtplotter_general
\image html stylesbanner.png
@@ -70,8 +70,9 @@ Here is a table with all available ready-made styles:
| \image html simple_axesoffset_plotbox.ini.png
|
---|
-\see For a detailed example, see \ref JKQTPlotterStyling
+\see Classes are documented in \ref jkqtpplotter_styling_classes .
+ See \ref JKQTPlotterStyling for a detailed example.
-*/
\ No newline at end of file
+*/
diff --git a/doc/dox/jkqtplotter_stylingclassdoc.dox b/doc/dox/jkqtplotter_stylingclassdoc.dox
new file mode 100644
index 0000000000..466cac0f76
--- /dev/null
+++ b/doc/dox/jkqtplotter_stylingclassdoc.dox
@@ -0,0 +1,13 @@
+
+/*!
+
+
+\defgroup jkqtpplotter_styling_classes Styling System Classes
+\ingroup jkqtplotter_classdoc
+
+This group assembles all classes that for the styling system of JKQTPlotter.
+
+\see \ref jkqtpplotter_styling
+
+
+*/
\ No newline at end of file
diff --git a/doc/dox/jkqtplotter_usage.dox b/doc/dox/jkqtplotter_usage.dox
new file mode 100644
index 0000000000..2a72265999
--- /dev/null
+++ b/doc/dox/jkqtplotter_usage.dox
@@ -0,0 +1,154 @@
+/*!
+
+
+ \defgroup jkqtplotter_general_usage Usage of JKQTPlotter
+ \ingroup jkqtplotter_general
+
+ \defgroup jkqtplotter_general_usage_jkqtbaseplotter Usage of JKQTBasePlotter Non-Visible Class
+ \ingroup jkqtplotter_general_usage
+
+ It is also possible to use it in a standalone fashion to generate plots without generating a window.
+ Note that the baseplotter class still requires the \c widgets+gui modules of Qt, because it contains code to e.g.
+ display pint or export preview dialogs!
+
+ Here is an example of how to do this (it is taken from the command-line tool \ref JKQTPlotterDocImageRenderCmdLineTool):
+
+ First we generate the JKQTBasePlotter object and add some data to the internal JKQTPDatastore
+ \code
+ JKQTBasePlotter plot(true);
+ JKQTPDatastore* ds=plot.getDatastore();
+ size_t cx=ds->addCopiedColumn(QVector{-1.5,-0.5,0.5,1.5,2.5},"x");
+ size_t cy=ds->addCopiedColumn(QVector{-0.75,-0.3,-0.05,0.2,0.65},"y");
+ \endcode
+
+ Now we set the range of x/y plot coordinates ...
+ \code
+ plot.setXY(-0.8,2.2,-0.5,0.7);
+ \endcode
+ and the size of the widget, i.e. the size of the plot in the windowing system.
+ \code
+ plot.setWidgetSize(150,50);
+ \endcode
+ Now we can add graphs to the plotter, e.g.
+ \code
+ JKQTPXYLineGraph* g=new JKQTPXYLineGraph(&plot);
+ g->setXColumn(cx);
+ g->setYColumn(cy);
+ plot.addGraph(g);
+ \endcode
+ Finally we store an image of the plot as PNG-file:
+ \code
+ plot.saveAsPixelImage("output.png", false, "png");
+ \endcode
+ Alternatively you can obtain a QImage of the plot using JKQTBasePlotter::grabPixelImage() or copy the
+ image to the clipboard using JKQTBasePlotter::copyPixelImage(). Also storages as PDF and SVG is available via
+ JKQTBasePlotter::saveAsPDF() and JKQTBasePlotter::saveAsSVG().
+
+ With simlar code you can also integrate JKQTBasePlotter into your own widgets.
+
+
+
+
+
+
+
+ \defgroup jkqtplotter_general_usage_jkqtplotter Usage of JKQTPlotter Widget
+ \ingroup jkqtplotter_general_usage
+
+ JKQTPlotter is a plotter widget which wraps around a JKQTBasePlotter instanced that does the actual drawing.
+ A basic usage of JKQTPlotter looks like this:
+
+ \code{.cpp}
+ // create a new JKQTPlotter instance
+ JKQTPlotter* plot = new JKQTPlotter(parentWidget);
+
+ // fill two vectors with dtaa for a graph:
+ QVector X, Y;
+ fillDataVectors(X, Y);
+
+ // make data available to the internal datastore of the plotter:
+ size_t columnX=plot->getDatastore()->addCopiedColumn(X, "x");
+ size_t columnY=plot->getDatastore()->addCopiedColumn(Y, "y");
+
+ // create a graph/curve, which displays the data
+ JKQTPXYLineGraph* graph1=new JKQTPXYLineGraph(plot);
+ graph1->setXColumn(columnX);
+ graph1->setYColumn(columnY);
+ graph1->setTitle(QObject::tr("graph title"));
+ plot->addGraph(graph1);
+
+ // autoscale the plot
+ plot->zoomToFit();
+ // alternatively set the axis dimension by hand:
+ plot->setXY(-10,10,-10,10);
+ \endcode
+
+ The result should look something like this:
+
+ \image html simpletest.png
+
+ Starting from this basic example, you can observe several important principles:
+
+ - Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through
+ JKQTPlotter::getDatastore().
+ This datastore can either own its data (which is done here, as we copy the data into the store
+ by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
+ data needs to be available as array of \c double values).
+
- Naming conventions (excerpt from \ref jkqtplotter_naming ):
+
+ - \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
+
- plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
+
- \b graph is a single curve/image/geometric element in the plot
+
- geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore,
+ but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol
+
- \b key is the legend of the plot
+
- coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
+
+ - Each graph is represented by a class derived from JKQTPPlotElement (in the example we instanciated a JKQTPXYLineGraph,
+ which shows data as a scatter of symbols that may (or may not) be connected by a line).
+ Creating the graph class does not yet add it to the plotter. To add it, call JKQTPlotter::addGraph(). Only
+ after this sep, the graph is displayed. You can modify the apperance of the graph (e.g. colors,
+ name in the key ...) by setting properties in the graph class instance.
+
- You can auto-zoom the axis ranges of the plot by calling JKQTPlotter::zoomToFit(), or set them
+ exlicitly by calling JKQTPlotter::setXY(). The user can later zoom in/out by the mouse (and other means).
+ You can limit this zoom range by setting an absolute axis range, calling e.g. JKQTPlotter::setAbsoluteXY().
+ The the user cannot zoom farther out than the given range(s).
+
- If you want to style the plot itself, you need to set properties of the underlying JKQTBasePloter instance, which
+ is accessible through JKQTPlotter::getPlotter(). If you want to style the coordinate axes, you can acces their
+ representing objects by caling JKQTPlotter::getXAxis() or JKQTPlotter::getYAxis().
+
+
+ \see \ref JKQTPlotterSimpleTest and \see JKQTPlotterQtCreator
+
+
+
+
+
+
+ \defgroup jkqtplotter_general_usage_qtcreator How to use JKQTPlotter in the Qt Form Designer
+ \ingroup jkqtplotter_general_usage
+
+
+ As JKQTPlotter is a standard Qt widget, you can also use it in Qt UI-files designed with the Qt From Designer (e.g. from within QTCreator).
+ For this to work you have to use the Promote QWidget"-feature of the form designer. The steps you need to take are detailed below:
+
+ - add a new UI-file to your project and open it in the Form Editor. Then right-click the form and select `Promote Widgets ...`:
+
+ \image html uidesigner_step1.png
+
+ - In the dialog that opens, you have to define `JKQTPlotter` as a promotion to `QWidget` as shown below. Finally store the settings by clicking `Add` and closing the dialog with `Close`.
+
+ \image html uidesigner_step2.png
+
+ - Now you can add a `QWidget`from the side-bar to the form and then promote it to `JKQTPlotter`, by selecting and right-clicking the `QWidget` and then selecting `Promote To | JKQTPlotter`:
+
+ \image html uidesigner_step3.png
+
+
+
+ \see \ref JKQTPlotterQtCreator Also see \ref JKQTPlotterStyling for another example of using the Qt UI Designer with JKQTPlotter
+
+*/
+
+
+
diff --git a/doc/dox/whatsnew.dox b/doc/dox/whatsnew.dox
index 644e8f7d83..87f08831b2 100644
--- a/doc/dox/whatsnew.dox
+++ b/doc/dox/whatsnew.dox
@@ -134,11 +134,11 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include:
\subsection page_whatsnew_TRUNK_DOWNLOAD trunk: Download
-This release is available from:
- - Source code branch: https://github.com/jkriege2/JKQtPlotter
- - Source Code download (ZIP): https://github.com/jkriege2/JKQtPlotter/archive/master.zip
- - Git-Link: https://github.com/jkriege2/JKQtPlotter.git
-.
+This release is available from
@@ -152,7 +152,7 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
fixed issue #38: Buffer overflow, thanks to user:zertyz
fixed issue #43: jkqtp_format() had undefined behaviour, thanks to user:Makis42
fixed issue #41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF , thanks to user:smistad
- fixed issue #37: CMake installs things into $PREFIX/doc/*.txt , thanks to user:certik
+ fixed issue #37: CMake installs things into $PREFIX/doc/ *.txt , thanks to user:certik
fixed issue #45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath', thanks to user:abdedixit
merged PR #47: Some minor build fixes, thanks to user:patstew
fixed issue #48: Cannot \#include QPrintPreviewWidget, thanks to user:schlenger
@@ -194,10 +194,10 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
\subsection page_whatsnew_V4_0_0_DOWNLOAD V4.0.0: Download
-This release is available from:
- - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0
- - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0 (2021-April-xx)
-.
+This release is available from
@@ -264,10 +264,10 @@ Changes, compared to \ref page_whatsnew_V2018_08 "v2018.08" include:
\subsection page_whatsnew_V2019_11_DOWNLOAD v2019.11: Download
-This release is available from:
- - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2019.11
- - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1 (2019-Dec-05)
-.
+This release is available from
@@ -276,17 +276,17 @@ This release is available from:
\section page_whatsnew_V2018_08 v2018.08: Minor Modifications (Final QuickFit3-compatible Version)
\subsection page_whatsnew_V2018_08_OVERVIEW v2018.08: Overview
-This is the final version of JKQTPlotter, which is still compatible with the QuickFit 3.0 code base. It contains minor changes as compared to \ref page_whatsnew_V2015_10 "v2015.10":
- - new: added Qt data model to switch graphs on/off
- - update: some improvements to test programs
-.
+This is the final version of JKQTPlotter, which is still compatible with the QuickFit 3.0 code base. It contains minor changes as compared to \ref page_whatsnew_V2015_10 "v2015.10"
+ - new: added Qt data model to switch graphs on/off
+
- update: some improvements to test programs
+
\subsection page_whatsnew_V2018_08_DOWNLOAD v2018.08: Download
-This release is available from:
- - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2018.08
- - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08 (2018-Aug-19)
-.
+This release is available from
@@ -302,10 +302,10 @@ This is the initial release of the library. It was developed initially as part o
\subsection page_whatsnew_V2015_10_DOWNLOAD v2015.10: Download
-This release is available from:
- - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2015.10
- - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10 (2015-Oct-20)
-.
+This release is available from
*/
diff --git a/doc/images/plot_elements.greenshot b/doc/images/plot_elements.greenshot
new file mode 100644
index 0000000000..65129f7c50
Binary files /dev/null and b/doc/images/plot_elements.greenshot differ
diff --git a/doc/images/plot_elements.png b/doc/images/plot_elements.png
new file mode 100644
index 0000000000..2a65df6441
Binary files /dev/null and b/doc/images/plot_elements.png differ
diff --git a/examples/simpletest/simpletest.cpp b/examples/simpletest/simpletest.cpp
index 3aea733d42..7821b7b38f 100644
--- a/examples/simpletest/simpletest.cpp
+++ b/examples/simpletest/simpletest.cpp
@@ -6,7 +6,7 @@
#include
#include "jkqtplotter/jkqtplotter.h"
-#include "jkqtplotter/graphs/jkqtpscatter.h"
+#include "jkqtplotter/graphs/jkqtplines.h"
#include "jkqtpexampleapplication.h"
diff --git a/lib/jkqtplotter/jkqtpbaseplotter.h b/lib/jkqtplotter/jkqtpbaseplotter.h
index e6331a21c5..b4499c5946 100644
--- a/lib/jkqtplotter/jkqtpbaseplotter.h
+++ b/lib/jkqtplotter/jkqtpbaseplotter.h
@@ -334,46 +334,10 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPPaintDeviceAdapter {
* Most commonly this invisible plotter class is used as basis for the widget JKQTPlotter.
* \see JKQTPlotter
*
- * \subsection jkqtplotter_usage_baseplotter_standalonw JKQTBasePlotter Standalone Usage
+ * \subsection jkqtplotter_usage_baseplotter_standalone JKQTBasePlotter Standalone Usage
*
- * But it is also possible to use it in a standalone fashion to generate plots without generating a window.
- * Note that the baseplotter class still requires the \c widgets+gui modules of Qt, because it contains code to e.g.
- * display pint or export preview dialogs!
+ * \copydetails jkqtplotter_general_usage_jkqtplotter
*
- * Here is an example of how to do this (it is taken from the command-line tool \ref JKQTPlotterDocImageRenderCmdLineTool):
- *
- * First we generate the JKQTBasePlotter object and add some data to the internal JKQTPDatastore
- * \code
- * JKQTBasePlotter plot(true);
- * JKQTPDatastore* ds=plot.getDatastore();
- * size_t cx=ds->addCopiedColumn(QVector{-1.5,-0.5,0.5,1.5,2.5},"x");
- * size_t cy=ds->addCopiedColumn(QVector{-0.75,-0.3,-0.05,0.2,0.65},"y");
- * \endcode
- *
- * Now we set the range of x/y plot coordinates ...
- * \code
- * plot.setXY(-0.8,2.2,-0.5,0.7);
- * \endcode
- * and the size of the widget, i.e. the size of the plot in the windowing system.
- * \code
- * plot.setWidgetSize(150,50);
- * \endcode
- * Now we can add graphs to the plotter, e.g.
- * \code
- * JKQTPXYLineGraph* g=new JKQTPXYLineGraph(&plot);
- * g->setXColumn(cx);
- * g->setYColumn(cy);
- * plot.addGraph(g);
- * \endcode
- * Finally we store an image of the plot as PNG-file:
- * \code
- * plot.saveAsPixelImage("output.png", false, "png");
- * \endcode
- * Alternatively you can obtain a QImage of the plot using grabPixelImage() or copy the
- * image to the clipboard using copyPixelImage(). ALso storages as PDF and SVG is available via
- * saveAsPDF() and saveAsSVG().
- *
- * With simlar code you can also integrate JKQTBasePlotter into your own widgets.
*/
class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotter: public QObject {
Q_OBJECT
diff --git a/lib/jkqtplotter/jkqtpbaseplotterstyle.h b/lib/jkqtplotter/jkqtpbaseplotterstyle.h
index 52a0a2d62a..58707bf5ea 100644
--- a/lib/jkqtplotter/jkqtpbaseplotterstyle.h
+++ b/lib/jkqtplotter/jkqtpbaseplotterstyle.h
@@ -40,7 +40,7 @@
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of a JKQTBasePlotter
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, \ref jkqtpplotter_styling
*/
@@ -171,14 +171,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotterStyle {
};
/** \brief returns the system-wide default JKQTPlotterStyle
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPGetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling
*/
JKQTPLOTTER_LIB_EXPORT JKQTBasePlotterStyle& JKQTPGetSystemDefaultBaseStyle();
/** \brief replaces the system-wide default JKQTPlotterStyle with the given \a newStyle
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPGetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling
*/
diff --git a/lib/jkqtplotter/jkqtpcoordinateaxes.h b/lib/jkqtplotter/jkqtpcoordinateaxes.h
index f3151f3890..7c0ca5c340 100644
--- a/lib/jkqtplotter/jkqtpcoordinateaxes.h
+++ b/lib/jkqtplotter/jkqtpcoordinateaxes.h
@@ -39,7 +39,7 @@ class JKQTBasePlotter;
/*! \brief this virtual class is the base for any type of coordinate axis, to be drawn by JKQTBasePlotter.
\ingroup jkqtpbaseplotter_elements
- This class implements all the functionality needed for a coordinate axis:
+ Class derived from JKQTPCoordinateAxis implements all the functionality needed for a coordinate axis:
- transform world to screen coordinates and vice versa
- draw the axis (implemented by child classes!) with these elements: axis lines, ticks, tick labels, axis label, x/y=0 axis
- measure the axes in screen coordinates
@@ -263,7 +263,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxis: public QObject {
inline double getUserTickSpacing() const { return this->userTickSpacing; }
/** \copydoc userLogTickSpacing */
inline double getUserLogTickSpacing() const { return this->userLogTickSpacing; }
- /** \copydoc JKQTPCoordinateAxisStyle::labelType */
+ /** \copydoc JKQTPCoordinateAxisStyle::tickLabelType */
inline JKQTPCALabelType getTickLabelType() const { return this->axisStyle.tickLabelType; }
/** \copydoc axisLabel */
inline QString getAxisLabel() const { return this->axisLabel; }
@@ -472,7 +472,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxis: public QObject {
/** \copydoc userLogTickSpacing */
void setUserLogTickSpacing (double __value);
- /** \copydoc JKQTPCoordinateAxisStyle::labelType */
+ /** \copydoc JKQTPCoordinateAxisStyle::tickLabelType */
void setTickLabelType (JKQTPCALabelType __value);
/** \copydoc JKQTPCoordinateAxisStyle::tickMode */
@@ -867,8 +867,6 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVerticalAxis: public JKQTPCoordinateAxis {
* \param labelOffset offset of the label from ( \a xx , \a yy ) in pt, this is typically equal to \c tickOuterLength+tickLabelDistance
* \param label text to display
* \param fontSize the fontSize of the label (in pt)
- * \param ascentMax maximum ascent of all tick labels
- * \param descentMax maximum descent of all tick labels
* \param isMinor indicates whether the axis tick is a minor tick
*/
void drawTickLabel1(JKQTPEnhancedPainter& painter, double xx, double yy, double labelOffset, const QString &label, double fontSize, bool isMinor=false) ;
@@ -880,8 +878,6 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVerticalAxis: public JKQTPCoordinateAxis {
* \param labelOffset offset of the label from ( \a xx , \a yy ) in pt, this is typically equal to \c tickOuterLength+tickLabelDistance
* \param label text to display
* \param fontSize the fontSize of the label (in pt)
- * \param ascentMax maximum ascent of all tick labels
- * \param descentMax maximum descent of all tick labels
* \param isMinor indicates whether the axis tick is a minor tick
*/
void drawTickLabel2(JKQTPEnhancedPainter& painter, double xx, double yy, double labelOffset, const QString &label, double fontSize, bool isMinor=false) ;
diff --git a/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h b/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h
index 480f5f226d..7bea43d2e6 100644
--- a/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h
+++ b/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h
@@ -31,7 +31,7 @@ class JKQTBasePlotterStyle; // forward
/** \brief Support Class for JKQTPCoordinateAxis, and summarizes all properties that define the visual styling of a grid (minor or major), associated with a JKQTPCoordinateAxis
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling
*
@@ -71,7 +71,7 @@ public:
/** \brief Support Class for JKQTPCoordinateAxis, which summarizes all properties that define the visual styling of a JKQTPCoordinateAxis
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling
*
@@ -215,7 +215,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxisStyle {
/** \brief Support Class for JKQTPCoordinateAxis, which summarizes all properties that define the visual styling of a JKQTPCoordinateAxis
* used for colorbars outside the plot
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* The major difference between this dervied version and the base JKQTPCoordinateAxisStyle are differently initialized members.
* \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling
diff --git a/lib/jkqtplotter/jkqtpdatastorage.h b/lib/jkqtplotter/jkqtpdatastorage.h
index 725abb7888..79a5a29ef5 100644
--- a/lib/jkqtplotter/jkqtpdatastorage.h
+++ b/lib/jkqtplotter/jkqtpdatastorage.h
@@ -50,7 +50,7 @@ class JKQTPColumnBackInserter; // forward declaration
/** \brief the types of data in one JKQTdatastoreItem
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \c JKQTPSingleColumn:
* \verbatim
@@ -86,7 +86,7 @@ enum class JKQTPDatastoreItemFormat {
};
/** \brief This class manages data columns (with entries of type \c double ), used by JKQTPlotter/JKQTBasePlotter to represent data for plots
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \see \ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management!
*
@@ -1434,7 +1434,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPDatastore{
/** \brief internally stores information about one data column. See JKQTPDatastore for more information.
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
* \internal
*
* \see JKQTPDatastore
@@ -1643,7 +1643,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPColumn {
#pragma pack(push,1)
/** \brief iterator over the data in the column of a JKQTPDatastore
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \see JKQTPColumn, JKQTPDatastore::begin(), JKQTPDatastore::end(), JKQTPDatastore, JKQTPConstColumnIterator
*/
@@ -1908,7 +1908,7 @@ class JKQTPColumnIterator {
/** \brief iterator, which allows to insert into a column of a JKQTPDatastore
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \see JKQTPDatastore::backInserter(), JKQTPDatastore, http://www.cplusplus.com/reference/iterator/insert_iterator/
*/
@@ -1954,7 +1954,7 @@ class JKQTPColumnBackInserter {
};
/** \brief iterator over the data in the column of a JKQTPDatastore
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \see JKQTPColumn, JKQTPDatastore::begin(), JKQTPDatastore::end(), JKQTPDatastore, JKQTPColumnIterator
*/
@@ -2234,7 +2234,7 @@ class JKQTPColumnConstIterator {
/** \brief this represents one chunk of memory which can represent one or more columns of data for JKQTBasePlotter.
* See JKQTPDatastore for more information.
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* Each chunk of memory is pointed at by a simple double* pointer \c data. the memory layout of the memory layout of
* the RAM segment pointed at by \c data is determined by the parameter \c dataformat:
@@ -2472,7 +2472,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPDatastoreItem {
/** \brief QAbstractTableModel descendent that allows to view data in a JKQTPDatastore
- * \ingroup jkqtpdatastorage
+ * \ingroup jkqtpdatastorage_classes
*
* \see JKQTPDatastore
*/
diff --git a/lib/jkqtplotter/jkqtpgraphsbasestyle.h b/lib/jkqtplotter/jkqtpgraphsbasestyle.h
index 2644306186..4b10af894d 100644
--- a/lib/jkqtplotter/jkqtpgraphsbasestyle.h
+++ b/lib/jkqtplotter/jkqtpgraphsbasestyle.h
@@ -41,7 +41,7 @@ class JKQTBasePlotterStyle; // forward
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of graphs
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, \ref jkqtpplotter_styling
*/
@@ -112,7 +112,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTGraphsSpecificStyleProperties {
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of geometric elements
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, \ref jkqtpplotter_styling
*/
@@ -162,7 +162,7 @@ public:
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of annotation elements
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, \ref jkqtpplotter_styling
*/
@@ -210,7 +210,7 @@ public:
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of a JKQTBasePlotter
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, \ref jkqtpplotter_styling
*/
diff --git a/lib/jkqtplotter/jkqtpkeystyle.h b/lib/jkqtplotter/jkqtpkeystyle.h
index bb98b6a928..7cc0927b02 100644
--- a/lib/jkqtplotter/jkqtpkeystyle.h
+++ b/lib/jkqtplotter/jkqtpkeystyle.h
@@ -32,7 +32,7 @@
class JKQTBasePlotterStyle; // forward
/** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of the key in a JKQTBasePlotter
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTBasePlotter, JKQTBasePlotterStyle, \ref jkqtpplotter_styling
*/
diff --git a/lib/jkqtplotter/jkqtplotter.h b/lib/jkqtplotter/jkqtplotter.h
index 5827397956..4eb496041a 100644
--- a/lib/jkqtplotter/jkqtplotter.h
+++ b/lib/jkqtplotter/jkqtplotter.h
@@ -73,70 +73,8 @@ JKQTPLOTTER_LIB_EXPORT void initJKQTPlotterResources();
*
* \section JKQTPLOTTER_BASICUSAGE Basic Usage of JKQTPlotter
*
- * JKQTPlotter is a plotter widget which wraps around a JKQTBasePlotter instanced that does the actual drawing.
- * A basic usage of JKQTPlotter looks like this:
+ * \copydetails jkqtplotter_general_usage_jkqtbaseplotter
*
- * \code{.cpp}
- * // create a new JKQTPlotter instance
- * JKQTPlotter* plot = new JKQTPlotter(parentWidget);
- *
- * // fill two vectors with dtaa for a graph:
- * QVector X, Y;
- * fillDataVectors(X, Y);
- *
- * // make data available to the internal datastore of the plotter:
- * size_t columnX=plot->getDatastore()->addCopiedColumn(X, "x");
- * size_t columnY=plot->getDatastore()->addCopiedColumn(Y, "y");
- *
- * // create a graph/curve, which displays the data
- * JKQTPXYLineGraph* graph1=new JKQTPXYLineGraph(plot);
- * graph1->setXColumn(columnX);
- * graph1->setYColumn(columnY);
- * graph1->setTitle(QObject::tr("graph title"));
- * plot->addGraph(graph1);
- *
- * // autoscale the plot
- * plot->zoomToFit();
- * // alternatively set the axis dimension by hand:
- * plot->setXY(-10,10,-10,10);
- * \endcode
- *
- * The result should look something like this:
- *
- * \image html simpletest.png
- *
- * Starting from this basic example, you can observe several important principles:
- *
- * - Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through
- * JKQTPlotter::getDatastore().
- * This datastore can either own its data (which is done here, as we copy the data into the store
- * by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
- * data needs to be available as array of \c double values).
- *
- Naming conventions (excerpt from \ref jkqtplotter_naming ):
- *
- * - \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
- *
- plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
- *
- \b graph is a single curve/image/geometric element in the plot
- *
- geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore,
- * but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol
- *
- \b key is the legend of the plot
- *
- coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
- *
- * - Each graph is represented by a class derived from JKQTPPlotElement (in the example we instanciated a JKQTPXYLineGraph,
- * which shows data as a scatter of symbols that may (or may not) be connected by a line).
- * Creating the graph class does not yet add it to the plotter. To add it, call JKQTPlotter::addGraph(). Only
- * after this sep, the graph is displayed. You can modify the apperance of the graph (e.g. colors,
- * name in the key ...) by setting properties in the graph class instance.
- *
- You can auto-zoom the axis ranges of the plot by calling JKQTPlotter::zoomToFit(), or set them
- * exlicitly by calling JKQTPlotter::setXY(). The user can later zoom in/out by the mouse (and other means).
- * You can limit this zoom range by setting an absolute axis range, calling e.g. JKQTPlotter::setAbsoluteXY().
- * The the user cannot zoom farther out than the given range(s).
- *
- If you want to style the plot itself, you need to set properties of the underlying JKQTBasePloter instance, which
- * is accessible through JKQTPlotter::getPlotter(). If you want to style the coordinate axes, you can acces their
- * representing objects by caling JKQTPlotter::getXAxis() or JKQTPlotter::getYAxis().
- *
- *
- * \see \ref JKQTPlotterSimpleTest and \see JKQTPlotterQtCreator
*
* \section JKQTPLOTTER_SYNCMULTIPLOT Synchronizing Several Plots
*
@@ -420,25 +358,7 @@ JKQTPLOTTER_LIB_EXPORT void initJKQTPlotterResources();
*
* \section JKQTPLOTTER_USEQTCREATOR How to use JKQTPlotter in the Qt Form Designer
*
- * As JKQTPlotter is a standard Qt widget, you can also use it in Qt UI-files designed with the Qt From Designer (e.g. from within QTCreator).
- * For this to work you have to use the Promote QWidget"-feature of the form designer. The steps you need to take are detailed below:
- *
- * - add a new UI-file to your project and open it in the Form Editor. Then right-click the form and select `Promote Widgets ...`:
- *
- * \image html uidesigner_step1.png
- *
- * - In the dialog that opens, you have to define `JKQTPlotter` as a promotion to `QWidget` as shown below. Finally store the settings by clicking `Add` and closing the dialog with `Close`.
- *
- * \image html uidesigner_step2.png
- *
- * - Now you can add a `QWidget`from the side-bar to the form and then promote it to `JKQTPlotter`, by selecting and right-clicking the `QWidget` and then selecting `Promote To | JKQTPlotter`:
- *
- * \image html uidesigner_step3.png
- *
- *
- *
- * \see \ref JKQTPlotterQtCreator Also see \ref JKQTPlotterStyling for another example of using the Qt UI Designer with JKQTPlotter
- *
+ * \copydetails jkqtplotter_general_usage_qtcreator
*/
class JKQTPLOTTER_LIB_EXPORT JKQTPlotter: public QWidget {
Q_OBJECT
diff --git a/lib/jkqtplotter/jkqtplotterstyle.h b/lib/jkqtplotter/jkqtplotterstyle.h
index bcca14ba13..b685831c50 100644
--- a/lib/jkqtplotter/jkqtplotterstyle.h
+++ b/lib/jkqtplotter/jkqtplotterstyle.h
@@ -33,7 +33,7 @@
/** \brief Support Class for JKQTPlotter, which summarizes all properties that define the visual styling of a JKQTPlotter
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPlotter, \ref jkqtpplotter_styling
*/
@@ -158,14 +158,14 @@ public:
/** \brief returns the system-wide default JKQTPlotterStyle
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPSetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling
*/
JKQTPLOTTER_LIB_EXPORT JKQTPlotterStyle& JKQTPGetSystemDefaultStyle();
/** \brief replaces the system-wide default JKQTPlotterStyle with the given \a newStyle
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPGetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling
*/
diff --git a/lib/jkqtplotter/jkqtptools.h b/lib/jkqtplotter/jkqtptools.h
index 8ae288abb3..afe10d3def 100644
--- a/lib/jkqtplotter/jkqtptools.h
+++ b/lib/jkqtplotter/jkqtptools.h
@@ -250,7 +250,7 @@ typedef QHash JKQTPMouseMoveAction
typedef JKQTPMouseMoveActionsHashMap::const_iterator JKQTPMouseMoveActionsHashMapIterator;
/** \brief Specifies how a fill-color is derived from a given color
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*/
struct JKQTPLOTTER_LIB_EXPORT JKQTPColorDerivationMode {
@@ -342,7 +342,7 @@ public:
};
/** \brief use a JKQTPColorDerivationMode to derive a color from \a col as specified
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \param mode the mode of how to modify the given color \a basecolor
* \param basecolor the color in which to base the derivation
@@ -352,7 +352,7 @@ public:
JKQTPLOTTER_LIB_EXPORT QColor JKQTPGetDerivedColor(JKQTPColorDerivationMode mode, const QColor& basecolor);
/** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alphaF
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
* \see QColorWithAlpha()
*/
inline QColor QColorWithAlphaF(const QColor& color, qreal alphaF) {
@@ -362,7 +362,7 @@ inline QColor QColorWithAlphaF(const QColor& color, qreal alphaF) {
}
/** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alpha
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
* \see QColorWithAlphaF()
*/
inline QColor QColorWithAlpha(const QColor& color, int alpha) {
@@ -372,13 +372,13 @@ inline QColor QColorWithAlpha(const QColor& color, int alpha) {
}
/** \brief convert a JKQTPColorDerivationMode to a QString
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see String2JKQTPColorDerivationMode(), JKQTPColorDerivationMode
*/
JKQTPLOTTER_LIB_EXPORT QString JKQTPColorDerivationMode2String(JKQTPColorDerivationMode mode);
/** \brief convert a QString (created by JKQTPColorDerivationMode2String() ) to JKQTPColorDerivationMode
- * \ingroup jkqtpplotter_styling
+ * \ingroup jkqtpplotter_styling_classes
*
* \see JKQTPColorDerivationMode2String(), JKQTPColorDerivationMode
*/
@@ -452,7 +452,7 @@ enum JKQTPCALabelType {
JKQTPCALTfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ \frac{1}{2} \f$ \image html axisstyle/JKQTPCALTfrac.png */
JKQTPCALTslashfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTslashfrac.png */
JKQTPCALTsfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTsfrac.png */
- JKQTPCALTintfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \$ -3\frac{1}{2} \f$ \image html axisstyle/JKQTPCALTintfrac.png */
+ JKQTPCALTintfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ -3\frac{1}{2} \f$ \image html axisstyle/JKQTPCALTintfrac.png */
JKQTPCALTintslashfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTintslashfrac.png */
JKQTPCALTintsfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTintsfrac.png */
|
---|
|
---|