updated documentation (better structure & more info)

This commit is contained in:
jkriege2 2022-09-24 20:18:08 +02:00
parent 630b4d02f6
commit 1c0d0cb262
30 changed files with 1042 additions and 794 deletions

View File

@ -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

View File

@ -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
<table>
<tr><th>Screenshot<th>Description<th>Notes
@ -91,7 +91,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
</table>
\subsection jkqtp_extut_geometric Geometric Forms, Arrows, Annotaions ...
\subsection jkqtp_extut_geometric Examples for Geometric Forms, Arrows, Annotaions ...
<table>
<tr><th> Screenshot <th> Description <th> Notes
@ -106,7 +106,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
<td> `JKQTPGeoEllipse`, `JKQTPGeoArc`, `JKQTPGeoChord`, `JKQTPGeoPie`
</table>
\subsection jkqtp_extut_keyaxesstyles Styling the Plot, Keys, Axes, ...
\subsection jkqtp_extut_keyaxesstyles Examples for Styling the Plot, Keys, Axes, ...
<table>
<tr><th> Screenshot <th> Description <th> 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
<table>
<tr><th> Screenshot <th> Description <th> 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
<table>
<tr><th> Screenshot <th> Description <th> Notes
@ -183,7 +183,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
</table>
\subsection jkqtp_extut_guitoolslayout Layout & Styling
\subsection jkqtp_extut_guitoolslayout Examples for Layout & Styling
<table>
<tr><th> Screenshot <th> Description <th> Notes
@ -199,7 +199,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
</table>
\subsection jkqtp_extut_datamanagement Data Management & Statistics
\subsection jkqtp_extut_datamanagement Examples for Data Management & Statistics
<table>
<tr><th> Screenshot <th> Description <th> Notes
@ -241,7 +241,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
</table>
\subsection jkqtp_extut_cmake_build CMake Build System
\subsection jkqtp_extut_cmake_build Examples for CMake Build System
<table>
<tr><th> Screenshot <th> Description <th> Notes

View File

@ -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 ...)

View File

@ -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:
<ul>
<li> \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
<li> <b>plot element</b> any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
<li> \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also
\ref jkqtplotter_graphsgroup_classstructure_basics )
<li> <b>geometric element</b> 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
<li> \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
<li> \b key is the legend of the plot
<li> <b>coordinate axis</b> is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
</ul>
*/

View File

@ -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 <a href="https://en.wikipedia.org/wiki/Mixin">mix-in</a> 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
- ...
.
*/

View File

@ -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 <a href="http://doc.qt.io/qt-5/qpainter.html">QPainter</a>)
- JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend
- JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph
- JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming)
- JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming)
.
In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle.
These are used to e.g. add color-scales to the side of the graph:
- JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle
- JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle
.
Usually if writing a new graph, one would not directly
derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs.
\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:
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html beeswarmplot_small.png
<td> JKQTPSingleColumnSymbolsGraph
<tr>
<td>\image html JKQTPXYScatterGraph_small.png
<td> JKQTPXYScatterGraph, JKQTPXYScatterErrorGraph
<tr>
<td>\image html symbols_and_styles_small.png
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
<tr>
<td>\image html paramscatterplot_small.png
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
<tr>
<td>\image html stepplots_small.png
<td> JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
</table>
\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html beeswarmplot_small.png
<td> JKQTPSingleColumnSymbolsGraph
<tr>
<td>\image html symbols_and_styles_small.png
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
<tr>
<td>\image html stepplots_small.png
<td> JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
</table>
\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html paramscatterplot_small.png
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
</table>
\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html filledgraphs_small.png
<td> JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph
<tr>
<td>\image html JKQTPFilledCurveXErrorGraph_small.png
<td> JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph
<tr>
<td>\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png
<td> JKQTPFilledVerticalRangeGraph, JKQTPFilledHorizontalRangeGraph
</table>
\defgroup jkqtplotter_functiongraphs Function Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html functionplot_small.png
<td> JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph
<tr>
<td>\image html evalcurve_small.png
<td> JKQTPXYFunctionLineGraph
</table>
\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html functionplot_small.png
<td> JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph
</table>
\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ...
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html barchart_small.png
<td> JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph
<tr>
<td>\image html barchart_error_small.png
<td> JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph
<tr>
<td>\image html JKQTPbarVerticalGraphStacked_small.png
<td> JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph
<tr>
<td>\image html impulsesplot_small.png
<td> JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph
<tr>
<td>\image html impulses_errors_small.png
<td> JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph
</table>
\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...)
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html boxplot_small.png
<td> JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph
<tr>
<td>\image html JKQTPViolinplotVerticalElement_small.png
<td> JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
</table>
\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
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html symbol_filled_diamond.png
<td> JKQTPGeoSymbol
<tr>
<td>\image html geo_text_small.png
<td> JKQTPGeoText
<tr>
<td>\image html geo_line_small.png
<td> JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines
<tr>
<td>\image html geo_arrows_small.png
<td> JKQTPGeoArrow
<tr>
<td>\image html geo_rect_small.png
<td> JKQTPGeoRectangle
<tr>
<td>\image html geo_polygon_small.png
<td> JKQTPGeoPolygon
<tr>
<td>\image html geo_ellipse_small.png
<td> JKQTPGeoEllipse
<tr>
<td>\image html geo_arc_small.png
<td> JKQTPGeoArc
<tr>
<td>\image html geo_pie_small.png
<td> JKQTPGeoPie
<tr>
<td>\image html geo_chords_small.png
<td> JKQTPGeoChord
</table>
Examples:
- \ref JKQTPlotterGeometricGraphs
.
\defgroup jkqtplotter_annotations Graph Annotations
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html symbol_filled_diamond.png
<td> JKQTPGeoSymbol
<tr>
<td>\image html geo_text_small.png
<td> JKQTPGeoText
<tr>
<td>\image html JKQTPHorizontalRange_small.png
<td> JKQTPHorizontalRange, JKQTPVerticalRange
</table>
Examples:
- \ref JKQTPlotterGeometricGraphs
.
\defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...)
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html JKQTPPeakStreamGraphY_small.png
<td> JKQTPPeakStreamGraph
<tr>
<td>\image html geo_boxplot_small.png
<td> JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement
<tr>
<td>\image html JKQTPViolinplotVerticalElement_small.png
<td> JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
</table>
\defgroup jkqtplotter_imagelots Matrix/Image Plotting
\ingroup jkqtplotter_graphsgroup
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html rgbimageplot_qt_small.png
<td> JKQTPImage
<tr>
<td>\image html JKQTPMathImageBaseModifyNone_small.png
<td> JKQTPMathImage, JKQTPColumnMathImage
<tr>
<td>\image html rgbimageplots_small.png
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
<tr>
<td>\image html overlayimage_small.png
<td> JKQTPOverlayImage
<tr>
<td>\image html overlayimageenhanced_small.png
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
<tr>
<td>\image html JKQTPColumnContourPlot_small.png
<td> JKQTPContourPlot, JKQTPColumnContourPlot
</table>
\defgroup jkqtplotter_imagelots_elements Image Graphs
\ingroup jkqtplotter_imagelots
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html rgbimageplot_qt_small.png
<td> JKQTPImage
<tr>
<td>\image html JKQTPMathImageBaseModifyNone_small.png
<td> JKQTPMathImage, JKQTPColumnMathImage
<tr>
<td>\image html rgbimageplot_cimg_small.png
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
</table>
\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs
\ingroup jkqtplotter_imagelots
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html overlayimage_small.png
<td> JKQTPOverlayImage
<tr>
<td>\image html overlayimageenhanced_small.png
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
</table>
\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing
\ingroup jkqtplotter_imagelots
\defgroup jkqtplotter_imagelots_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
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html JKQTPColumnContourPlot_small.png
<td> JKQTPContourPlot, JKQTPColumnContourPlot
</table>
*/

View File

@ -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
*/

View File

@ -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, <br>
\ref jkqtp_extut_datamanagement
*/

View File

@ -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
<br>\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

View File

@ -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 <a href="http://doc.qt.io/qt-5/qpainter.html">QPainter</a>)
- JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend
- JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph
- JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming)
- JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming)
.
In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle.
These are used to e.g. add color-scales to the side of the graph:
- JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle
- JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle
.
Usually if writing a new graph, one would not directly
derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs.
\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.
*/

View File

@ -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):
<ul>
<li> \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
<li> <b>plot element</b> any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
<li> \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also
\ref jkqtplotter_graphsgroup_classstructure_basics )
<li> <b>geometric element</b> 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
<li> \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
<li> \b key is the legend of the plot, showing a list of the graphs, each represented by a <b>entry marker</b> (showing the graphs color/symbol/...) and a <b>entry title</b>.
<li> <b>coordinate axis</b> 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 <b>axis label</b>, axis <b> ticks</b> and corresponding <b>tick labels</b> (major and a second set of minor ticks in between are available)
<li> <b>zero axis</b>: a pair of axes through the origin \c x=0 and \c y=0 of the coordinate system
<li> \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
<li> <b>minor grid</b> in addition to the grid, corresponding to the major axis ticks, you can add additional lines that correspond to the minor axis ticks
<li> <b>color bar</b> 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.
</ul>
\image html plot_elements.png
*/

View File

@ -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 <a href="http://doc.qt.io/qt-5/qpainter.html">QPainter</a>)
- JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend
- JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph
- JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming)
- JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming)
.
In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle.
These are used to e.g. add color-scales to the side of the graph:
- JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle
- JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle
.
Usually if writing a new graph, one would not directly
derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs.
\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.
*/

View File

@ -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:
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html beeswarmplot_small.png
<td> JKQTPSingleColumnSymbolsGraph
<tr>
<td>\image html JKQTPXYScatterGraph_small.png
<td> JKQTPXYScatterGraph, JKQTPXYScatterErrorGraph
<tr>
<td>\image html symbols_and_styles_small.png
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
<tr>
<td>\image html paramscatterplot_small.png
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
<tr>
<td>\image html stepplots_small.png
<td> JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
</table>
\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html beeswarmplot_small.png
<td> JKQTPSingleColumnSymbolsGraph
<tr>
<td>\image html symbols_and_styles_small.png
<td> JKQTPXYLineGraph, JKQTPXYLineErrorGraph
<tr>
<td>\image html stepplots_small.png
<td> JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph
</table>
\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html paramscatterplot_small.png
<td> JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph
</table>
\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html filledgraphs_small.png
<td> JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph
<tr>
<td>\image html JKQTPFilledCurveXErrorGraph_small.png
<td> JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph
<tr>
<td>\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png
<td> JKQTPFilledVerticalRangeGraph, JKQTPFilledHorizontalRangeGraph
</table>
\defgroup jkqtplotter_functiongraphs Function Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html functionplot_small.png
<td> JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph
<tr>
<td>\image html evalcurve_small.png
<td> JKQTPXYFunctionLineGraph
</table>
\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs
\ingroup jkqtplotter_linesymbolgraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html functionplot_small.png
<td> JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph
</table>
\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ...
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html barchart_small.png
<td> JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph
<tr>
<td>\image html barchart_error_small.png
<td> JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph
<tr>
<td>\image html JKQTPbarVerticalGraphStacked_small.png
<td> JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph
<tr>
<td>\image html impulsesplot_small.png
<td> JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph
<tr>
<td>\image html impulses_errors_small.png
<td> JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph
</table>
\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...)
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html boxplot_small.png
<td> JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph
<tr>
<td>\image html JKQTPViolinplotVerticalElement_small.png
<td> JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
</table>
\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
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html symbol_filled_diamond.png
<td> JKQTPGeoSymbol
<tr>
<td>\image html geo_text_small.png
<td> JKQTPGeoText
<tr>
<td>\image html geo_line_small.png
<td> JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines
<tr>
<td>\image html geo_arrows_small.png
<td> JKQTPGeoArrow
<tr>
<td>\image html geo_rect_small.png
<td> JKQTPGeoRectangle
<tr>
<td>\image html geo_polygon_small.png
<td> JKQTPGeoPolygon
<tr>
<td>\image html geo_ellipse_small.png
<td> JKQTPGeoEllipse
<tr>
<td>\image html geo_arc_small.png
<td> JKQTPGeoArc
<tr>
<td>\image html geo_pie_small.png
<td> JKQTPGeoPie
<tr>
<td>\image html geo_chords_small.png
<td> JKQTPGeoChord
</table>
Examples:
- \ref JKQTPlotterGeometricGraphs
.
\defgroup jkqtplotter_annotations Graph Annotations
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html symbol_filled_diamond.png
<td> JKQTPGeoSymbol
<tr>
<td>\image html geo_text_small.png
<td> JKQTPGeoText
<tr>
<td>\image html JKQTPHorizontalRange_small.png
<td> JKQTPHorizontalRange, JKQTPVerticalRange
</table>
Examples:
- \ref JKQTPlotterGeometricGraphs
.
\defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...)
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html JKQTPPeakStreamGraphY_small.png
<td> JKQTPPeakStreamGraph
<tr>
<td>\image html geo_boxplot_small.png
<td> JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement
<tr>
<td>\image html JKQTPViolinplotVerticalElement_small.png
<td> JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement
</table>
\defgroup jkqtplotter_imagelots Matrix/Image Plotting
\ingroup jkqtplotter_concretegraphs
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html rgbimageplot_qt_small.png
<td> JKQTPImage
<tr>
<td>\image html JKQTPMathImageBaseModifyNone_small.png
<td> JKQTPMathImage, JKQTPColumnMathImage
<tr>
<td>\image html rgbimageplots_small.png
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
<tr>
<td>\image html overlayimage_small.png
<td> JKQTPOverlayImage
<tr>
<td>\image html overlayimageenhanced_small.png
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
<tr>
<td>\image html JKQTPColumnContourPlot_small.png
<td> JKQTPContourPlot, JKQTPColumnContourPlot
</table>
\defgroup jkqtplotter_imagelots_elements Image Graphs
\ingroup jkqtplotter_imagelots
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html rgbimageplot_qt_small.png
<td> JKQTPImage
<tr>
<td>\image html JKQTPMathImageBaseModifyNone_small.png
<td> JKQTPMathImage, JKQTPColumnMathImage
<tr>
<td>\image html rgbimageplot_cimg_small.png
<td> JKQTPRGBMathImage, JKQTPColumnRGBMathImage
</table>
\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs
\ingroup jkqtplotter_imagelots
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html overlayimage_small.png
<td> JKQTPOverlayImage
<tr>
<td>\image html overlayimageenhanced_small.png
<td> JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced
</table>
\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing
\ingroup jkqtplotter_imagelots
\defgroup jkqtplotter_imagelots_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
<table>
<tr>
<th> Screenshot
<th> Classes
<tr>
<td>\image html JKQTPColumnContourPlot_small.png
<td> JKQTPContourPlot, JKQTPColumnContourPlot
</table>
*/

View File

@ -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:
<td> \image html simple_axesoffset_plotbox.ini.png
</table>
\see For a detailed example, see \ref JKQTPlotterStyling
\see Classes are documented in \ref jkqtpplotter_styling_classes .
<br>See \ref JKQTPlotterStyling for a detailed example.
*/
*/

View File

@ -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
*/

View File

@ -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<double>{-1.5,-0.5,0.5,1.5,2.5},"x");
size_t cy=ds->addCopiedColumn(QVector<double>{-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<double> 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:
<ol>
<li> 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).
<li> Naming conventions (excerpt from \ref jkqtplotter_naming ):
<ul>
<li> \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
<li> <b>plot element</b> any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
<li> \b graph is a single curve/image/geometric element in the plot
<li> <b>geometric element</b> 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
<li> \b key is the legend of the plot
<li> <b>coordinate axis</b> is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
</ul>
<li> 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.
<li> 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).
<li> 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().
</ol>
\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 <a href="https://doc.qt.io/qt-6/designer-using-custom-widgets.html">Promote QWidget"-feature</a> of the form designer. The steps you need to take are detailed below:
<ol>
<li> 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
</li>
<li> 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
</li>
<li> 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
</li>
</ol>
\see \ref JKQTPlotterQtCreator <br> Also see \ref JKQTPlotterStyling for another example of using the Qt UI Designer with JKQTPlotter
*/

View File

@ -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: <a href="https://github.com/jkriege2/JKQtPlotter">https://github.com/jkriege2/JKQtPlotter</a>
- Source Code download (ZIP): <a href="https://github.com/jkriege2/JKQtPlotter/archive/master.zip">https://github.com/jkriege2/JKQtPlotter/archive/master.zip</a>
- Git-Link: <a href="https://github.com/jkriege2/JKQtPlotter.git">https://github.com/jkriege2/JKQtPlotter.git</a>
.
This release is available from<ul>
<li> Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter">https://github.com/jkriege2/JKQtPlotter</a>
<li> Source Code download (ZIP): <a href="https://github.com/jkriege2/JKQtPlotter/archive/master.zip">https://github.com/jkriege2/JKQtPlotter/archive/master.zip</a>
<li> Git-Link: <a href="https://github.com/jkriege2/JKQtPlotter.git">https://github.com/jkriege2/JKQtPlotter.git</a>
</ul>
@ -152,7 +152,7 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/38">#38: Buffer overflow</a>, thanks to <a href="https://github.com/zertyz">user:zertyz</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/43">#43: jkqtp_format() had undefined behaviour</a>, thanks to <a href="https://github.com/Makis42">user:Makis42</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/41">#41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF </a>, thanks to <a href="https://github.com/smistad">user:smistad</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/37">#37: CMake installs things into $PREFIX/doc/*.txt </a>, thanks to <a href="https://github.com/certik">user:certik</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/37">#37: CMake installs things into $PREFIX/doc/ *.txt </a>, thanks to <a href="https://github.com/certik">user:certik</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/45">#45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath'</a>, thanks to <a href="https://github.com/abdedixit">user:abdedixit</a></li>
<li> merged PR <a href="https://github.com/jkriege2/JKQtPlotter/pull/47">#47: Some minor build fixes</a>, thanks to <a href="https://github.com/patstew">user:patstew</a></li>
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/issues/48">#48: Cannot \#include QPrintPreviewWidget</a>, thanks to <a href="https://github.com/schlenger">user:schlenger</a></li>
@ -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: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0">https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0</a>
- Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0">https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0</a> (2021-April-xx)
.
This release is available from<ul>
<li> Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0">https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0</a>
<li> Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0">https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0</a> (2021-April-xx)
</ul>
@ -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: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2019.11">https://github.com/jkriege2/JKQtPlotter/tree/v2019.11</a>
- Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1</a> (2019-Dec-05)
.
This release is available from<ul>
<li> Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2019.11">https://github.com/jkriege2/JKQtPlotter/tree/v2019.11</a>
<li> Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1</a> (2019-Dec-05)
</ul>
@ -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 <a href="https://github.com/jkriege2/QuickFit3">QuickFit 3.0</a> 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 <a href="https://github.com/jkriege2/QuickFit3">QuickFit 3.0</a> code base. It contains minor changes as compared to \ref page_whatsnew_V2015_10 "v2015.10"<ul>
<li> new: added Qt data model to switch graphs on/off
<li> update: some improvements to test programs
</ul>
\subsection page_whatsnew_V2018_08_DOWNLOAD v2018.08: Download
This release is available from:
- Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2018.08">https://github.com/jkriege2/JKQtPlotter/tree/v2018.08</a>
- Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08</a> (2018-Aug-19)
.
This release is available from<ul>
<li> Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2018.08">https://github.com/jkriege2/JKQtPlotter/tree/v2018.08</a>
<li> Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08</a> (2018-Aug-19)
</ul>
@ -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: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2015.10">https://github.com/jkriege2/JKQtPlotter/tree/v2015.10</a>
- Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10</a> (2015-Oct-20)
.
This release is available from<ul>
<li> Source code branch: <a href="https://github.com/jkriege2/JKQtPlotter/tree/v2015.10">https://github.com/jkriege2/JKQtPlotter/tree/v2015.10</a>
<li> Latest Release/Tag: <a href="https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10">https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10</a> (2015-Oct-20)
</ul>
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -6,7 +6,7 @@
#include <QApplication>
#include "jkqtplotter/jkqtplotter.h"
#include "jkqtplotter/graphs/jkqtpscatter.h"
#include "jkqtplotter/graphs/jkqtplines.h"
#include "jkqtpexampleapplication.h"

View File

@ -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<double>{-1.5,-0.5,0.5,1.5,2.5},"x");
* size_t cy=ds->addCopiedColumn(QVector<double>{-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

View File

@ -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
*/

View File

@ -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) ;

View File

@ -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

View File

@ -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
*/

View File

@ -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
*/

View File

@ -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
*/

View File

@ -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<double> 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:
* <ol>
* <li> 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).
* <li> Naming conventions (excerpt from \ref jkqtplotter_naming ):
* <ul>
* <li> \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements
* <li> <b>plot element</b> any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve
* <li> \b graph is a single curve/image/geometric element in the plot
* <li> <b>geometric element</b> 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
* <li> \b key is the legend of the plot
* <li> <b>coordinate axis</b> is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale)
* </ul>
* <li> 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.
* <li> 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).
* <li> 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().
* </ol>
*
* \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 <a href="https://doc.qt.io/qt-6/designer-using-custom-widgets.html">Promote QWidget"-feature</a> of the form designer. The steps you need to take are detailed below:
* <ol>
* <li> 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
* </li>
* <li> 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
* </li>
* <li> 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
* </li>
* </ol>
*
* \see \ref JKQTPlotterQtCreator <br> 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

View File

@ -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
*/

View File

@ -250,7 +250,7 @@ typedef QHash<Qt::KeyboardModifiers, JKQTPMouseMoveActions> 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 <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
* \ingroup jkqtpplotter_styling
* \ingroup jkqtpplotter_styling_classes
*
* \see String2JKQTPColorDerivationMode(), JKQTPColorDerivationMode
*/
JKQTPLOTTER_LIB_EXPORT QString JKQTPColorDerivationMode2String(JKQTPColorDerivationMode mode);
/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (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 */