mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-24 09:31:40 +08:00
updated documentation (better structure & more info)
This commit is contained in:
parent
630b4d02f6
commit
1c0d0cb262
12
Doxyfile
12
Doxyfile
@ -2330,12 +2330,7 @@ PREDEFINED = DOXYGEN \
|
||||
# definition found in the source code.
|
||||
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||
|
||||
EXPAND_AS_DEFINED = "
|
||||
JKQTCOMMON_LIB_EXPORT" \
|
||||
JKQTPLOTTER_LIB_EXPORT \
|
||||
JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT \
|
||||
JKQTFASTPLOTTER_LIB_EXPORT \
|
||||
JKQTMATHTEXT_LIB_EXPORT
|
||||
EXPAND_AS_DEFINED =
|
||||
|
||||
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
|
||||
# remove all references to function-like macros that are alone on a line, have
|
||||
@ -2637,7 +2632,10 @@ DOT_PATH =
|
||||
DOTFILE_DIRS = doc/dot/ \
|
||||
./doc/dot/ \
|
||||
doc/dot \
|
||||
./doc/dot
|
||||
./doc/dot \
|
||||
doc/dot \
|
||||
dot \
|
||||
../dot
|
||||
|
||||
# The MSCFILE_DIRS tag can be used to specify one or more directories that
|
||||
# contain msc files that are included in the documentation (see the \mscfile
|
||||
|
@ -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
|
||||
|
@ -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 ...)
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
||||
|
||||
*/
|
@ -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
|
||||
- ...
|
||||
.
|
||||
|
||||
|
||||
|
||||
*/
|
@ -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>
|
||||
|
||||
|
||||
|
||||
*/
|
22
doc/dox/jkqtplotter_baseplotelements.dox
Normal file
22
doc/dox/jkqtplotter_baseplotelements.dox
Normal 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
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
19
doc/dox/jkqtplotter_datastorage.dox
Normal file
19
doc/dox/jkqtplotter_datastorage.dox
Normal 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
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
182
doc/dox/jkqtplotter_graphs.dox
Normal file
182
doc/dox/jkqtplotter_graphs.dox
Normal 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.
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
29
doc/dox/jkqtplotter_naming.dox
Normal file
29
doc/dox/jkqtplotter_naming.dox
Normal 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
|
||||
|
||||
*/
|
182
doc/dox/jkqtplotter_plotelements.dox
Normal file
182
doc/dox/jkqtplotter_plotelements.dox
Normal 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.
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
346
doc/dox/jkqtplotter_plotelements_classdoc.dox
Normal file
346
doc/dox/jkqtplotter_plotelements_classdoc.dox
Normal 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>
|
||||
|
||||
|
||||
|
||||
*/
|
@ -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.
|
||||
|
||||
|
||||
|
||||
*/
|
||||
*/
|
13
doc/dox/jkqtplotter_stylingclassdoc.dox
Normal file
13
doc/dox/jkqtplotter_stylingclassdoc.dox
Normal 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
|
||||
|
||||
|
||||
*/
|
154
doc/dox/jkqtplotter_usage.dox
Normal file
154
doc/dox/jkqtplotter_usage.dox
Normal 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
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
||||
*/
|
||||
|
BIN
doc/images/plot_elements.greenshot
Normal file
BIN
doc/images/plot_elements.greenshot
Normal file
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
BIN
doc/images/plot_elements.png
Normal file
BIN
doc/images/plot_elements.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
@ -6,7 +6,7 @@
|
||||
|
||||
#include <QApplication>
|
||||
#include "jkqtplotter/jkqtplotter.h"
|
||||
#include "jkqtplotter/graphs/jkqtpscatter.h"
|
||||
#include "jkqtplotter/graphs/jkqtplines.h"
|
||||
#include "jkqtpexampleapplication.h"
|
||||
|
||||
|
||||
|
@ -334,46 +334,10 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPPaintDeviceAdapter {
|
||||
* Most commonly this invisible plotter class is used as basis for the widget JKQTPlotter.
|
||||
* \see JKQTPlotter
|
||||
*
|
||||
* \subsection jkqtplotter_usage_baseplotter_standalonw JKQTBasePlotter Standalone Usage
|
||||
* \subsection jkqtplotter_usage_baseplotter_standalone JKQTBasePlotter Standalone Usage
|
||||
*
|
||||
* But it is also possible to use it in a standalone fashion to generate plots without generating a window.
|
||||
* Note that the baseplotter class still requires the \c widgets+gui modules of Qt, because it contains code to e.g.
|
||||
* display pint or export preview dialogs!
|
||||
* \copydetails jkqtplotter_general_usage_jkqtplotter
|
||||
*
|
||||
* Here is an example of how to do this (it is taken from the command-line tool \ref JKQTPlotterDocImageRenderCmdLineTool):
|
||||
*
|
||||
* First we generate the JKQTBasePlotter object and add some data to the internal JKQTPDatastore
|
||||
* \code
|
||||
* JKQTBasePlotter plot(true);
|
||||
* JKQTPDatastore* ds=plot.getDatastore();
|
||||
* size_t cx=ds->addCopiedColumn(QVector<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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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) ;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user