diff --git a/Doxyfile b/Doxyfile index 38043acaf8..4b29207058 100644 --- a/Doxyfile +++ b/Doxyfile @@ -2330,12 +2330,7 @@ PREDEFINED = DOXYGEN \ # definition found in the source code. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -EXPAND_AS_DEFINED = " -JKQTCOMMON_LIB_EXPORT" \ - JKQTPLOTTER_LIB_EXPORT \ - JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT \ - JKQTFASTPLOTTER_LIB_EXPORT \ - JKQTMATHTEXT_LIB_EXPORT +EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have @@ -2637,7 +2632,10 @@ DOT_PATH = DOTFILE_DIRS = doc/dot/ \ ./doc/dot/ \ doc/dot \ - ./doc/dot + ./doc/dot \ + doc/dot \ + dot \ + ../dot # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the \mscfile diff --git a/doc/dox/examples_and_tutorials.dox b/doc/dox/examples_and_tutorials.dox index 099a8fdb88..6507b5dff6 100644 --- a/doc/dox/examples_and_tutorials.dox +++ b/doc/dox/examples_and_tutorials.dox @@ -9,7 +9,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int \section jkqtp_extut_jkqtplotter Examples&Tutorials for JKQTPlotter -\subsection jkqtp_extut_plotstyles Different Plot Data Styles +\subsection jkqtp_extut_plotstyles Examples for Different Plot Data Styles
ScreenshotDescriptionNotes @@ -91,7 +91,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_geometric Geometric Forms, Arrows, Annotaions ... +\subsection jkqtp_extut_geometric Examples for Geometric Forms, Arrows, Annotaions ...
Screenshot Description Notes @@ -106,7 +106,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int `JKQTPGeoEllipse`, `JKQTPGeoArc`, `JKQTPGeoChord`, `JKQTPGeoPie`
-\subsection jkqtp_extut_keyaxesstyles Styling the Plot, Keys, Axes, ... +\subsection jkqtp_extut_keyaxesstyles Examples for Styling the Plot, Keys, Axes, ...
Screenshot Description Notes @@ -129,7 +129,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int -\subsection jkqtp_extut_plotimagedata Image data Plots +\subsection jkqtp_extut_plotimagedata Examples for Image data Plots
Screenshot Description Notes @@ -170,7 +170,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int -\subsection jkqtp_extut_guitools GUI Tools +\subsection jkqtp_extut_guitools Examples for GUI Tools
Screenshot Description Notes @@ -183,7 +183,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_guitoolslayout Layout & Styling +\subsection jkqtp_extut_guitoolslayout Examples for Layout & Styling
Screenshot Description Notes @@ -199,7 +199,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_datamanagement Data Management & Statistics +\subsection jkqtp_extut_datamanagement Examples for Data Management & Statistics
Screenshot Description Notes @@ -241,7 +241,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
-\subsection jkqtp_extut_cmake_build CMake Build System +\subsection jkqtp_extut_cmake_build Examples for CMake Build System
Screenshot Description Notes diff --git a/doc/dox/jkqtplotter.dox b/doc/dox/jkqtplotter.dox index c4b3f80257..39424297ff 100644 --- a/doc/dox/jkqtplotter.dox +++ b/doc/dox/jkqtplotter.dox @@ -10,9 +10,15 @@ A Qt based plotter for 2D scientific graphs. Main Plotting widget is JKQTPlotter This group assembles documentation of general principles and definitions behind the JKQTPlotter library. +\defgroup jkqtplotter_classdoc Type/Class/Function Documentation +\ingroup jkqtplotter + +This group assembles the documentation of the actual classes, types and functions in the JKQTPlotter library. + + \defgroup jkqtpplotterclasses Plotter Class & Plotter Widget -\ingroup jkqtplotter +\ingroup jkqtplotter_classdoc This group contains the actual plotter classes, that implement layout management code, coordinate system management an actual plotter widget ... @@ -24,10 +30,10 @@ There are two main classes: \defgroup jkqtpplottersupprt Support Classes and Functions -\ingroup jkqtplotter +\ingroup jkqtplotter_classdoc \defgroup jkqtpqtwidgetsttools Qt Widgets/Tools to work with JKQTPlotter -\ingroup jkqtplotter +\ingroup jkqtplotter_classdoc This group assembles several Qt widgets and tool classes that are linked to JKQTPlotter/JKQTBasePlotter and allow to build advanced GUIs for these (e.g. model/view access to internal data ...) diff --git a/doc/dox/jkqtplotter_01naming.dox b/doc/dox/jkqtplotter_01naming.dox deleted file mode 100644 index fd167e5642..0000000000 --- a/doc/dox/jkqtplotter_01naming.dox +++ /dev/null @@ -1,25 +0,0 @@ -/*! - - \defgroup jkqtplotter_naming Conventions Naming Conventions in JKQTPlotter - \ingroup jkqtplotter_general - - - This page assembles the naming conventions behind the implementation and documentation of JKQTPlotter: -
    -
  • \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements - It is drawn by the invisible JKQTBasePlotter, which is typically controlled by an actual widget like JKQTPlotter -
  • plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve -
  • \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also - \ref jkqtplotter_graphsgroup_classstructure_basics ) -
  • geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore, - but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol. These elements are typically - derived from JKQTPGeometricPlotElement -
  • \b annotation is a plot element, which is used to annotate the graphs/plot, e.g. some text. These elements are typically - derived from JKQTPPlotAnnotationElement -
  • \b key is the legend of the plot -
  • coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale) -
- - - -*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_02principles.dox b/doc/dox/jkqtplotter_02principles.dox deleted file mode 100644 index 7919fa101e..0000000000 --- a/doc/dox/jkqtplotter_02principles.dox +++ /dev/null @@ -1,48 +0,0 @@ -/*! - - \defgroup jkqtplotter_basicprinciples Basic Principles of JKQTPlotter - \ingroup jkqtplotter_general - - This page documents some basic principles behind the design of the JKQTPlotter library. - - \tableofcontents - - \section jkqtplotter_basicprinciples_datastorage Datastorage - Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore(). - This datastore can either own its data (which is done here, as we copy the data into the store - e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then - data needs to be available as array of \c double values). - - In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator - interface to access the data. - - \see JKQTPDatastore, - \ref jkqtpdatastorage , - \ref jkqtp_extut_datamanagement - - \section jkqtplotter_basicprinciples_graphs_and_mixins Graphs & Mix-Ins - - Each graph is represented by a class derived from JKQTPPlotElement (e.g. JKQTPXYLineGraph, - which shows data as a scatter of symbols that may (or may not) be connected by a line). - - There is a complete hirarchy of graph base classes, from which different graphs (or more general plot elements) are derived, - see \ref jkqtplotter_graphsgroup_classstructure_basics . - - - Constructing a graph class does not yet add it to the plotter. To add it, call JKQTBasePlotter::addGraph() / JKQTPlotter::addGraph(). Only - after this step, the graph is displayed. You can modify the apperance of the graph (e.g. colors, name in the key ...) by setting - properties in the graph class instance. - - Most graph peroperties are inserted into the graph class via mix-in classes. - A Mixin allows to inject the same code into different classes, but does not require these classes to be in the same inheritance - tree. The style of mix-in programming used in the JKQTPlotter library is multiple-inheritance. So a graph class is derived from - JKQTPGraph but also has additional parent classes from \ref jkqtplotter_basegraphs_stylemixins like: - - JKQTPGraphLineStyleMixin which provides line-styling - - JKQTPGraphSymbolStyleMixin which provides styling for graph symbols - - JKQTPGraphFillStyleMixin which provides fill styles - - ... - . - - - -*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_04plotelements.dox b/doc/dox/jkqtplotter_04plotelements.dox deleted file mode 100644 index 955504fd1b..0000000000 --- a/doc/dox/jkqtplotter_04plotelements.dox +++ /dev/null @@ -1,513 +0,0 @@ -/*! - - -\defgroup jkqtplotter_elements Plot Elements -\ingroup jkqtplotter - -This group assembles all classes that represent different elements of a plot (managed by JKQTBasePlotter/JKQTPlotter). -There are these major subgroups: - - \ref jkqtpbaseplotter_elements contains all non-graph objects, i.e. things like coordinate axes and so on - - \ref jkqtplotter_graphsgroup contains the actual graph classes -. - -\defgroup jkqtpbaseplotter_elements Basic (non-graph) Plot Elements (coordinate axes, ...) -\ingroup jkqtplotter_elements - -This group contains some tool classes that implement basic elements of the plot (coordinate axes, key, ...). -These classes are used by JKQTPlotterBase to output the plot. - - -\defgroup jkqtplotter_graphsgroup Graph Classes -\ingroup jkqtplotter_elements - -This group contains all classes in the JKQTPlotter library that may be used to draw a graph (i.e. a curve) onto a plot. - -\tableofcontents - -\section jkqtplotter_graphsgroup_classstructure Graph Class Structure - -\subsection jkqtplotter_graphsgroup_classstructure_basics Graph Classes - -Each type of graph is represented by another class, which has to be derived from JKQTPPlotElement. This class provides a basic virtual interface -that allows JKQTPlotter to draw the graphs represented by them. This interface consists of these functions: - - JKQTPPlotElement::draw() draws the graph onto a given JKQTPEnhancedPainter (derived from QPainter) - - JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend - - JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph - - JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming) - - JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming) -. -In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle. -These are used to e.g. add color-scales to the side of the graph: - - JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle - - JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle -. - -Usually if writing a new graph, one would not directly -derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs. - -\dot -digraph -{ - // LATEX_PDF_SIZE - bgcolor="transparent"; - edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"]; - node [fontname="FreeSans",fontsize="12"]; - rankdir="LR"; - - { - rank=same; - JKQTPPlotElement [URL="\link JKQTPPlotElement"]; - noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"]; - JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none]; - } - - { - rank=same; - JKQTPGraph [URL="\link JKQTPPlotElement"]; - noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"]; - JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none]; - - JKQTPGeometricPlotElement [URL="\link JKQTPGeometricPlotElement"]; - noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"]; - JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none]; - - JKQTPPlotAnnotationElement [URL="\link JKQTPPlotAnnotationElement"]; - noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."]; - JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none]; - } - - - { - rank=same; - - JKQTPXYGraph [URL="\link JKQTPXYGraph"] - noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"]; - JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none]; - - JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"] - noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"]; - JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none]; - - JKQTPImageBase [URL="\link JKQTPImageBase"] - noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"]; - JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none]; - } - - { - rank=same; - - JKQTPXYYGraph [URL="\link JKQTPXYYGraph"] - noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"]; - JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none]; - - JKQTPXXYGraph [URL="\link JKQTPXXYGraph"] - noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"]; - JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none]; - - JKQTPXYBaselineGraph [URL="\link JKQTPXYBaselineGraph"] - noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"]; - JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none]; - - JKQTPEvaluatedFunctionGraphBase [URL="\link JKQTPEvaluatedFunctionGraphBase"] - noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"]; - JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none]; - - JKQTPMathImageBase [URL="\link JKQTPMathImageBase"] - noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"]; - JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none]; - } - - { - rank=same; - - JKQTPBarGraphBase [URL="\link JKQTPBarGraphBase"] - noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"]; - JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none]; - - JKQTPFilledCurveGraphBase [URL="\link JKQTPFilledCurveGraphBase"] - noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"]; - JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none]; - - JKQTPImpulsesGraphBase [URL="\link JKQTPImpulsesGraphBase"] - noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"]; - JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none]; - - JKQTPSpecialLineGraphBase [URL="\link JKQTPSpecialLineGraphBase"] - noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"]; - JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none]; - - JKQTPBoxplotGraphBase [URL="\link JKQTPBoxplotGraphBase"] - noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"]; - JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none]; - - JKQTPRangeBase [URL="\link JKQTPRangeBase"]; - noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"]; - JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none]; - - JKQTPBoxplotElementBase [URL="\link JKQTPBoxplotElementBase"] - noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"]; - JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none]; - - JKQTPViolinplotElementBase [URL="\link JKQTPViolinplotElementBase"] - noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"]; - JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none]; - } - - JKQTPPlotElement -> JKQTPGraph - JKQTPPlotElement -> JKQTPGeometricPlotElement - JKQTPPlotElement -> JKQTPPlotAnnotationElement - JKQTPPlotElement -> JKQTPRangeBase - JKQTPPlotElement -> JKQTPBoxplotElementBase - JKQTPPlotElement -> JKQTPViolinplotElementBase - - JKQTPGraph -> JKQTPXYGraph - JKQTPGraph -> JKQTPSingleColumnGraph - JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase - JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase - JKQTPGraph -> JKQTPBoxplotGraphBase - - JKQTPXYGraph -> JKQTPXYYGraph - JKQTPXYGraph -> JKQTPXXYGraph - JKQTPXYGraph -> JKQTPXYBaselineGraph - - JKQTPXYBaselineGraph -> JKQTPBarGraphBase - JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase - JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase - JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase - -} - -\enddot - -\subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs - -\see \ref jkqtplotter_basicprinciples_graphs_and_mixins - -In addition there are mix-in classes that are used via multiple inheritance -that add additional features and properties to a graph. A prominent example are the classes for \ref jkqtplotter_basegraphserrors "error indicators". -With these there are usually two variants of one type of graph: One without error indicators and one with error indicators, e.g.: - - JKQTPXYLineGraph shows lines+symbols graphs made up from x/y-value pairs for each data point. - - JKQTPXYLineErrorGraph extends JKQTPXYLineGraph with error indicator drawing/properties provided by JKQTPXYGraphErrors -. -This approach allows to keep interfaces and appearance recognizeable over different graph classes and locates the source code -for a feature like error indicators in a single/in few class(es). - -Another example of such a class is JKQTPColorPaletteStyleAndToolsMixin, which provides functions that allow to use color palettes. It is -mainly used for the \ref jkqtplotter_imagelots "Image/Matrix graphs", but also by e.g. JKQTPXYParametrizedScatterGraph. - -\defgroup jkqtplotter_basegraphs Baseclasses for Graphs -\ingroup jkqtplotter_graphsgroup - -\defgroup jkqtplotter_basegraphserrors Mix-In Classes for Error Indicators -\ingroup jkqtplotter_basegraphs - -\defgroup jkqtplotter_basegraphs_stylemixins Mix-In Classes for Plot Styling -\ingroup jkqtplotter_basegraphs - -\defgroup jkqtplotter_linesymbolgraphs Line/Symbol Graphs -\ingroup jkqtplotter_graphsgroup - -This group assembles graphs that show their data with symbols and optionally with connecting lines in diferent styles: - - - - - - - -
Screenshot - Classes -
\image html beeswarmplot_small.png - JKQTPSingleColumnSymbolsGraph -
\image html JKQTPXYScatterGraph_small.png - JKQTPXYScatterGraph, JKQTPXYScatterErrorGraph -
\image html symbols_and_styles_small.png - JKQTPXYLineGraph, JKQTPXYLineErrorGraph -
\image html paramscatterplot_small.png - JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph -
\image html stepplots_small.png - JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph -
- -\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs -\ingroup jkqtplotter_linesymbolgraphs - - - - - - -
Screenshot - Classes -
\image html beeswarmplot_small.png - JKQTPSingleColumnSymbolsGraph -
\image html symbols_and_styles_small.png - JKQTPXYLineGraph, JKQTPXYLineErrorGraph -
\image html stepplots_small.png - JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph -
- - -\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs -\ingroup jkqtplotter_linesymbolgraphs - - - - -
Screenshot - Classes -
\image html paramscatterplot_small.png - JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph -
- -\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs -\ingroup jkqtplotter_graphsgroup - - - - - - -
Screenshot - Classes -
\image html filledgraphs_small.png - JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph -
\image html JKQTPFilledCurveXErrorGraph_small.png - JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph -
\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png - JKQTPFilledVerticalRangeGraph, JKQTPFilledHorizontalRangeGraph -
- -\defgroup jkqtplotter_functiongraphs Function Graphs -\ingroup jkqtplotter_linesymbolgraphs - - - - - -
Screenshot - Classes -
\image html functionplot_small.png - JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph -
\image html evalcurve_small.png - JKQTPXYFunctionLineGraph -
- -\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs -\ingroup jkqtplotter_linesymbolgraphs - - - - -
Screenshot - Classes -
\image html functionplot_small.png - JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph -
- -\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ... -\ingroup jkqtplotter_graphsgroup - - - - - - - - -
Screenshot - Classes -
\image html barchart_small.png - JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph -
\image html barchart_error_small.png - JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph -
\image html JKQTPbarVerticalGraphStacked_small.png - JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph -
\image html impulsesplot_small.png - JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph -
\image html impulses_errors_small.png - JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph -
- -\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...) -\ingroup jkqtplotter_graphsgroup - - - - - -
Screenshot - Classes -
\image html boxplot_small.png - JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph -
\image html JKQTPViolinplotVerticalElement_small.png - JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement -
- -\see \ref jkqtptools_math_statistics_adaptors for shortcuts to calculate statistical properties of data and then adding a plot with the results. - -\defgroup jkqtplotter_geoplots Geometric Elements (Lines, Rectangles, ...) -\ingroup jkqtplotter_graphsgroup - - - - - - - - - - - - - -
Screenshot - Classes -
\image html symbol_filled_diamond.png - JKQTPGeoSymbol -
\image html geo_text_small.png - JKQTPGeoText -
\image html geo_line_small.png - JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines -
\image html geo_arrows_small.png - JKQTPGeoArrow -
\image html geo_rect_small.png - JKQTPGeoRectangle -
\image html geo_polygon_small.png - JKQTPGeoPolygon -
\image html geo_ellipse_small.png - JKQTPGeoEllipse -
\image html geo_arc_small.png - JKQTPGeoArc -
\image html geo_pie_small.png - JKQTPGeoPie -
\image html geo_chords_small.png - JKQTPGeoChord -
- -Examples: - - \ref JKQTPlotterGeometricGraphs -. - -\defgroup jkqtplotter_annotations Graph Annotations -\ingroup jkqtplotter_graphsgroup - - - - - - -
Screenshot - Classes -
\image html symbol_filled_diamond.png - JKQTPGeoSymbol -
\image html geo_text_small.png - JKQTPGeoText -
\image html JKQTPHorizontalRange_small.png - JKQTPHorizontalRange, JKQTPVerticalRange -
- -Examples: - - \ref JKQTPlotterGeometricGraphs -. - -\defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...) -\ingroup jkqtplotter_graphsgroup - - - - - - -
Screenshot - Classes -
\image html JKQTPPeakStreamGraphY_small.png - JKQTPPeakStreamGraph -
\image html geo_boxplot_small.png - JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement -
\image html JKQTPViolinplotVerticalElement_small.png - JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement -
- -\defgroup jkqtplotter_imagelots Matrix/Image Plotting -\ingroup jkqtplotter_graphsgroup - - - - - - - - - -
Screenshot - Classes -
\image html rgbimageplot_qt_small.png - JKQTPImage -
\image html JKQTPMathImageBaseModifyNone_small.png - JKQTPMathImage, JKQTPColumnMathImage -
\image html rgbimageplots_small.png - JKQTPRGBMathImage, JKQTPColumnRGBMathImage -
\image html overlayimage_small.png - JKQTPOverlayImage -
\image html overlayimageenhanced_small.png - JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced -
\image html JKQTPColumnContourPlot_small.png - JKQTPContourPlot, JKQTPColumnContourPlot -
- -\defgroup jkqtplotter_imagelots_elements Image Graphs -\ingroup jkqtplotter_imagelots - - - - - - - -
Screenshot - Classes -
\image html rgbimageplot_qt_small.png - JKQTPImage -
\image html JKQTPMathImageBaseModifyNone_small.png - JKQTPMathImage, JKQTPColumnMathImage -
\image html rgbimageplot_cimg_small.png - JKQTPRGBMathImage, JKQTPColumnRGBMathImage -
- -\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs -\ingroup jkqtplotter_imagelots - - - - - -
Screenshot - Classes -
\image html overlayimage_small.png - JKQTPOverlayImage -
\image html overlayimageenhanced_small.png - JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced -
- -\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing -\ingroup jkqtplotter_imagelots - -\defgroup jkqtplotter_imagelots_tools_LUTS Tool Functions to Build Lookup-Tables for Palettes -\ingroup jkqtplotter_imagelots_tools - -\defgroup jkqtplotter_imagelots_contour Contour Graphs (based on Image Data) -\ingroup jkqtplotter_imagelots - - - - -
Screenshot - Classes -
\image html JKQTPColumnContourPlot_small.png - JKQTPContourPlot, JKQTPColumnContourPlot -
- - - -*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_baseplotelements.dox b/doc/dox/jkqtplotter_baseplotelements.dox new file mode 100644 index 0000000000..2e930b1636 --- /dev/null +++ b/doc/dox/jkqtplotter_baseplotelements.dox @@ -0,0 +1,22 @@ +/*! + + + \defgroup jkqtplotter_general_basicplotelements Non-Graph Plot Elements + \ingroup jkqtplotter_general + + \defgroup jkqtplotter_general_basicplotelements_coordinateaxes Coordinate Axes + \ingroup jkqtplotter_general_basicplotelements + + \copydetails JKQTPCoordinateAxis + + + + \defgroup jkqtplotter_general_basicplotelements_key Plot Key/Legend + \ingroup jkqtplotter_general_basicplotelements + + + +*/ + + + diff --git a/doc/dox/jkqtplotter_datastorage.dox b/doc/dox/jkqtplotter_datastorage.dox new file mode 100644 index 0000000000..318db99680 --- /dev/null +++ b/doc/dox/jkqtplotter_datastorage.dox @@ -0,0 +1,19 @@ +/*! + \defgroup jkqtpdatastorage Data Management and -storage + \ingroup jkqtplotter_general + + Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore(). + This datastore can either own its data (which is done here, as we copy the data into the store + e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then + data needs to be available as array of \c double values). + + In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator + interface to access the data. + + \see \ref jkqtpdatastorage_classes and especially JKQTPDatastore,
+ \ref jkqtp_extut_datamanagement +*/ + + + + diff --git a/doc/dox/jkqtplotter_03datastorage.dox b/doc/dox/jkqtplotter_datastorage_classdoc.dox similarity index 90% rename from doc/dox/jkqtplotter_03datastorage.dox rename to doc/dox/jkqtplotter_datastorage_classdoc.dox index aa3eb7e8cd..e40a2a04b1 100644 --- a/doc/dox/jkqtplotter_03datastorage.dox +++ b/doc/dox/jkqtplotter_datastorage_classdoc.dox @@ -1,7 +1,8 @@ + /*! -\defgroup jkqtpdatastorage Data Storage Classes/System -\ingroup jkqtplotter +\defgroup jkqtpdatastorage_classes Data Storage Classes +\ingroup jkqtplotter_classdoc The classes in this group implement a data storage system for use with the main plotter class. Basically a table of data is generated as a set of logical columns that may be bound to different @@ -9,10 +10,11 @@ data sources (internal or external memory arrays. Later on it is simply possible using the column number and the not a link to the actual data array, as the link is stored in these classes. -\see \ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management! +\see \ref jkqtpdatastorage +
\ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management! \defgroup jkqtpexternalinterfaces Interfaces To Other Libraries -\ingroup jkqtpdatastorage +\ingroup jkqtpdatastorage_classes \defgroup jkqtpinterfaceopencv OpenCV Interfaceing Tools diff --git a/doc/dox/jkqtplotter_graphs.dox b/doc/dox/jkqtplotter_graphs.dox new file mode 100644 index 0000000000..29074776ff --- /dev/null +++ b/doc/dox/jkqtplotter_graphs.dox @@ -0,0 +1,182 @@ +/*! + + + \defgroup jkqtplotter_graphsgroup_classstructure Graphs + \ingroup jkqtplotter_general + + \section jkqtplotter_graphsgroup_classstructure_basics Graph Class Structure + + Each type of graph is represented by another class, which has to be derived from JKQTPPlotElement. This class provides a basic virtual interface + that allows JKQTPlotter to draw the graphs represented by them. This interface consists of these functions: + - JKQTPPlotElement::draw() draws the graph onto a given JKQTPEnhancedPainter (derived from QPainter) + - JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend + - JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph + - JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming) + - JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming) + . + In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle. + These are used to e.g. add color-scales to the side of the graph: + - JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle + - JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle + . + + Usually if writing a new graph, one would not directly + derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs. + + \dot + digraph + { + // LATEX_PDF_SIZE + bgcolor="transparent"; + edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; + node [fontname="FreeSans",fontsize="10"]; + rankdir="LR"; + + { + rank=same; + JKQTPPlotElement [URL="\ref JKQTPPlotElement"]; + noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"]; + JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none]; + } + + { + rank=same; + JKQTPGraph [URL="\ref JKQTPPlotElement"]; + noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"]; + JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none]; + + JKQTPGeometricPlotElement [URL="\ref JKQTPGeometricPlotElement"]; + noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"]; + JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none]; + + JKQTPPlotAnnotationElement [URL="\ref JKQTPPlotAnnotationElement"]; + noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."]; + JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none]; + } + + + { + rank=same; + + JKQTPXYGraph [URL="\ref JKQTPXYGraph"] + noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"]; + JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none]; + + JKQTPSingleColumnGraph [URL="\ref JKQTPSingleColumnGraph"] + noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"]; + JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none]; + + JKQTPImageBase [URL="\ref JKQTPImageBase"] + noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"]; + JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPXYYGraph [URL="\ref JKQTPXYYGraph"] + noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"]; + JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none]; + + JKQTPXXYGraph [URL="\ref JKQTPXXYGraph"] + noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"]; + JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none]; + + JKQTPXYBaselineGraph [URL="\ref JKQTPXYBaselineGraph"] + noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"]; + JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none]; + + JKQTPEvaluatedFunctionGraphBase [URL="\ref JKQTPEvaluatedFunctionGraphBase"] + noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"]; + JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none]; + + JKQTPMathImageBase [URL="\ref JKQTPMathImageBase"] + noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"]; + JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPBarGraphBase [URL="\ref JKQTPBarGraphBase"] + noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"]; + JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none]; + + JKQTPFilledCurveGraphBase [URL="\ref JKQTPFilledCurveGraphBase"] + noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"]; + JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none]; + + JKQTPImpulsesGraphBase [URL="\ref JKQTPImpulsesGraphBase"] + noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"]; + JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none]; + + JKQTPSpecialLineGraphBase [URL="\ref JKQTPSpecialLineGraphBase"] + noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"]; + JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotGraphBase [URL="\ref JKQTPBoxplotGraphBase"] + noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"]; + JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none]; + + JKQTPRangeBase [URL="\ref JKQTPRangeBase"]; + noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"]; + JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotElementBase [URL="\ref JKQTPBoxplotElementBase"] + noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"]; + JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none]; + + JKQTPViolinplotElementBase [URL="\ref JKQTPViolinplotElementBase"] + noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"]; + JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none]; + } + + JKQTPPlotElement -> JKQTPGraph + JKQTPPlotElement -> JKQTPGeometricPlotElement + JKQTPPlotElement -> JKQTPPlotAnnotationElement + JKQTPPlotElement -> JKQTPRangeBase + JKQTPPlotElement -> JKQTPBoxplotElementBase + JKQTPPlotElement -> JKQTPViolinplotElementBase + + JKQTPGraph -> JKQTPXYGraph + JKQTPGraph -> JKQTPSingleColumnGraph + JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase + JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase + JKQTPGraph -> JKQTPBoxplotGraphBase + + JKQTPXYGraph -> JKQTPXYYGraph + JKQTPXYGraph -> JKQTPXXYGraph + JKQTPXYGraph -> JKQTPXYBaselineGraph + + JKQTPXYBaselineGraph -> JKQTPBarGraphBase + JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase + JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase + JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase + + } + \enddot + + + \section jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs + + \see \ref jkqtplotter_mixins + + In addition there are mix-in classes that are used via multiple inheritance + that add additional features and properties to a graph. A prominent example are the classes for \ref jkqtplotter_basegraphserrors "error indicators". + With these there are usually two variants of one type of graph: One without error indicators and one with error indicators, e.g.: + - JKQTPXYLineGraph shows lines+symbols graphs made up from x/y-value pairs for each data point. + - JKQTPXYLineErrorGraph extends JKQTPXYLineGraph with error indicator drawing/properties provided by JKQTPXYGraphErrors + . + This approach allows to keep interfaces and appearance recognizeable over different graph classes and locates the source code + for a feature like error indicators in a single/in few class(es). + + Another example of such a class is JKQTPColorPaletteStyleAndToolsMixin, which provides functions that allow to use color palettes. It is + mainly used for the \ref jkqtplotter_imagelots "Image/Matrix graphs", but also by e.g. JKQTPXYParametrizedScatterGraph. + + + + +*/ + + + diff --git a/doc/dox/jkqtplotter_naming.dox b/doc/dox/jkqtplotter_naming.dox new file mode 100644 index 0000000000..8ee69ff702 --- /dev/null +++ b/doc/dox/jkqtplotter_naming.dox @@ -0,0 +1,29 @@ +/*! + + \defgroup jkqtplotter_naming Conventions: Naming and Plot Construction + \ingroup jkqtplotter_general + + + This page assembles the naming conventions behind the implementation and documentation of JKQTPlotter (cf. the image below): +
    +
  • \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements + It is drawn by the invisible JKQTBasePlotter, which is typically controlled by an actual widget like JKQTPlotter +
  • plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve +
  • \b graph is a single curve/image/geometric element in the plot, typically derived from JKQTPGraph (see also + \ref jkqtplotter_graphsgroup_classstructure_basics ) +
  • geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore, + but a single geometric element, like a rectangle/circle/line/... These elements are typically + derived from JKQTPGeometricPlotElement +
  • \b annotation is a plot element, which is used to annotate the graphs/plot, e.g. some text. These elements are typically + derived from JKQTPPlotAnnotationElement +
  • \b key is the legend of the plot, showing a list of the graphs, each represented by a entry marker (showing the graphs color/symbol/...) and a entry title. +
  • coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale). Each coordinate axis is composed from several elements: the axis line itself, an axis label, axis ticks and corresponding tick labels (major and a second set of minor ticks in between are available) +
  • zero axis: a pair of axes through the origin \c x=0 and \c y=0 of the coordinate system +
  • \b grid a grid of horizontal/vertical lines, drawn behind the graph and providing visual guidance for the viewer of the graph. The grid is actually a part of the coordinate axes, as the lines are positioned at the same position as the axis ticks +
  • minor grid in addition to the grid, corresponding to the major axis ticks, you can add additional lines that correspond to the minor axis ticks +
  • color bar some graphs use a color-scale (e.g. images or parametrized scatter graphs). The color bar displays the used color palette of that graph. It is typically positioned besides or above the plot. +
+ + \image html plot_elements.png + +*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_plotelements.dox b/doc/dox/jkqtplotter_plotelements.dox new file mode 100644 index 0000000000..a54886e220 --- /dev/null +++ b/doc/dox/jkqtplotter_plotelements.dox @@ -0,0 +1,182 @@ +/*! + + + \defgroup jkqtplotter_graphsgroup_classstructure Graphs + \ingroup jkqtplotter_general + + \section jkqtplotter_graphsgroup_classstructure_basics Graph Class Structure + + Each type of graph is represented by another class, which has to be derived from JKQTPPlotElement. This class provides a basic virtual interface + that allows JKQTPlotter to draw the graphs represented by them. This interface consists of these functions: + - JKQTPPlotElement::draw() draws the graph onto a given JKQTPEnhancedPainter (derived from QPainter) + - JKQTPPlotElement::drawKeyMarker() draws the small marker image in the plot legend + - JKQTPPlotElement::getKeyLabelColor() returns a color for the legend entry for the graph + - JKQTPPlotElement::getXMinMax() returns the extent of the graph in x-direction (e.g. for auto-zooming) + - JKQTPPlotElement::getYMinMax() returns the extent of the graph in Y-direction (e.g. for auto-zooming) + . + In addition to these basic functions, there are additional functions that can be used to draw something outside the actual plot rectangle. + These are used to e.g. add color-scales to the side of the graph: + - JKQTPPlotElement::getOutsideSize() returns the amount of space required outside the plot rectangle + - JKQTPPlotElement::drawOutside() draws the elements outside the plot rectangle + . + + Usually if writing a new graph, one would not directly + derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs. + + \dot + digraph + { + // LATEX_PDF_SIZE + bgcolor="transparent"; + edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; + node [fontname="FreeSans",fontsize="10"]; + rankdir="LR"; + + { + rank=same; + JKQTPPlotElement [URL="\ref JKQTPPlotElement"]; + noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"]; + JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none]; + } + + { + rank=same; + JKQTPGraph [URL="\ref JKQTPPlotElement"]; + noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"]; + JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none]; + + JKQTPGeometricPlotElement [URL="\ref JKQTPGeometricPlotElement"]; + noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"]; + JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none]; + + JKQTPPlotAnnotationElement [URL="\ref JKQTPPlotAnnotationElement"]; + noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."]; + JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none]; + } + + + { + rank=same; + + JKQTPXYGraph [URL="\ref JKQTPXYGraph"] + noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"]; + JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none]; + + JKQTPSingleColumnGraph [URL="\ref JKQTPSingleColumnGraph"] + noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"]; + JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none]; + + JKQTPImageBase [URL="\ref JKQTPImageBase"] + noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"]; + JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPXYYGraph [URL="\ref JKQTPXYYGraph"] + noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"]; + JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none]; + + JKQTPXXYGraph [URL="\ref JKQTPXXYGraph"] + noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"]; + JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none]; + + JKQTPXYBaselineGraph [URL="\ref JKQTPXYBaselineGraph"] + noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"]; + JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none]; + + JKQTPEvaluatedFunctionGraphBase [URL="\ref JKQTPEvaluatedFunctionGraphBase"] + noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"]; + JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none]; + + JKQTPMathImageBase [URL="\ref JKQTPMathImageBase"] + noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"]; + JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPBarGraphBase [URL="\ref JKQTPBarGraphBase"] + noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"]; + JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none]; + + JKQTPFilledCurveGraphBase [URL="\ref JKQTPFilledCurveGraphBase"] + noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"]; + JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none]; + + JKQTPImpulsesGraphBase [URL="\ref JKQTPImpulsesGraphBase"] + noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"]; + JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none]; + + JKQTPSpecialLineGraphBase [URL="\ref JKQTPSpecialLineGraphBase"] + noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"]; + JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotGraphBase [URL="\ref JKQTPBoxplotGraphBase"] + noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"]; + JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none]; + + JKQTPRangeBase [URL="\ref JKQTPRangeBase"]; + noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"]; + JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotElementBase [URL="\ref JKQTPBoxplotElementBase"] + noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"]; + JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none]; + + JKQTPViolinplotElementBase [URL="\ref JKQTPViolinplotElementBase"] + noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"]; + JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none]; + } + + JKQTPPlotElement -> JKQTPGraph + JKQTPPlotElement -> JKQTPGeometricPlotElement + JKQTPPlotElement -> JKQTPPlotAnnotationElement + JKQTPPlotElement -> JKQTPRangeBase + JKQTPPlotElement -> JKQTPBoxplotElementBase + JKQTPPlotElement -> JKQTPViolinplotElementBase + + JKQTPGraph -> JKQTPXYGraph + JKQTPGraph -> JKQTPSingleColumnGraph + JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase + JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase + JKQTPGraph -> JKQTPBoxplotGraphBase + + JKQTPXYGraph -> JKQTPXYYGraph + JKQTPXYGraph -> JKQTPXXYGraph + JKQTPXYGraph -> JKQTPXYBaselineGraph + + JKQTPXYBaselineGraph -> JKQTPBarGraphBase + JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase + JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase + JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase + + } + + \enddot + + \section jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs + + \see \ref jkqtplotter_mixins + + In addition there are mix-in classes that are used via multiple inheritance + that add additional features and properties to a graph. A prominent example are the classes for \ref jkqtplotter_basegraphserrors "error indicators". + With these there are usually two variants of one type of graph: One without error indicators and one with error indicators, e.g.: + - JKQTPXYLineGraph shows lines+symbols graphs made up from x/y-value pairs for each data point. + - JKQTPXYLineErrorGraph extends JKQTPXYLineGraph with error indicator drawing/properties provided by JKQTPXYGraphErrors + . + This approach allows to keep interfaces and appearance recognizeable over different graph classes and locates the source code + for a feature like error indicators in a single/in few class(es). + + Another example of such a class is JKQTPColorPaletteStyleAndToolsMixin, which provides functions that allow to use color palettes. It is + mainly used for the \ref jkqtplotter_imagelots "Image/Matrix graphs", but also by e.g. JKQTPXYParametrizedScatterGraph. + + + + +*/ + + + diff --git a/doc/dox/jkqtplotter_plotelements_classdoc.dox b/doc/dox/jkqtplotter_plotelements_classdoc.dox new file mode 100644 index 0000000000..dab790cfb9 --- /dev/null +++ b/doc/dox/jkqtplotter_plotelements_classdoc.dox @@ -0,0 +1,346 @@ + + +/*! + + +\defgroup jkqtplotter_elements Plot Element Classes +\ingroup jkqtplotter_classdoc + +This group assembles all classes that represent different elements of a plot (managed by JKQTBasePlotter/JKQTPlotter). +There are these major subgroups: + - \ref jkqtpbaseplotter_elements contains all non-graph objects, i.e. things like coordinate axes and so on + - \ref jkqtplotter_concretegraphs contains the actual graph classes +. + +\defgroup jkqtpbaseplotter_elements Non-Graph Plot Elements +\ingroup jkqtplotter_elements + +This group contains some tool classes that implement basic elements of the plot (coordinate axes, key, ...). +These classes are used by JKQTPlotterBase to output the plot. + + + +\defgroup jkqtplotter_basegraphs Baseclasses for Graphs +\ingroup jkqtplotter_elements + +\defgroup jkqtplotter_mixins Mix-in classes for Graphs +\ingroup jkqtplotter_elements + +\defgroup jkqtplotter_basegraphserrors Mix-In Classes for Error Indicators +\ingroup jkqtplotter_mixins + +\defgroup jkqtplotter_basegraphs_stylemixins Mix-In Classes for Plot Styling +\ingroup jkqtplotter_mixins + + +\defgroup jkqtplotter_concretegraphs Concrete Graph Classes +\ingroup jkqtplotter_elements + + +\defgroup jkqtplotter_linesymbolgraphs Line/Symbol Graphs +\ingroup jkqtplotter_concretegraphs + +This group assembles graphs that show their data with symbols and optionally with connecting lines in diferent styles: + + + + + + + +
Screenshot + Classes +
\image html beeswarmplot_small.png + JKQTPSingleColumnSymbolsGraph +
\image html JKQTPXYScatterGraph_small.png + JKQTPXYScatterGraph, JKQTPXYScatterErrorGraph +
\image html symbols_and_styles_small.png + JKQTPXYLineGraph, JKQTPXYLineErrorGraph +
\image html paramscatterplot_small.png + JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph +
\image html stepplots_small.png + JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph +
+ +\defgroup jkqtplotter_linesymbolgraphs_simple Basic Line/Scatter Graphs +\ingroup jkqtplotter_linesymbolgraphs + + + + + + +
Screenshot + Classes +
\image html beeswarmplot_small.png + JKQTPSingleColumnSymbolsGraph +
\image html symbols_and_styles_small.png + JKQTPXYLineGraph, JKQTPXYLineErrorGraph +
\image html stepplots_small.png + JKQTPSpecialLineHorizontalGraph, JKQTPSpecialLineVerticalGraph +
+ + +\defgroup jkqtplotter_linesymbolgraphs_param Parametrized Line/Scatter Graphs +\ingroup jkqtplotter_linesymbolgraphs + + + + +
Screenshot + Classes +
\image html paramscatterplot_small.png + JKQTPXYParametrizedScatterGraph, JKQTPXYParametrizedErrorScatterGraph +
+ +\defgroup jkqtplotter_filledgraphs Filled Polygon/Area Graphs +\ingroup jkqtplotter_concretegraphs + + + + + + +
Screenshot + Classes +
\image html filledgraphs_small.png + JKQTPFilledCurveXGraph, JKQTPFilledCurveYGraph +
\image html JKQTPFilledCurveXErrorGraph_small.png + JKQTPFilledCurveXErrorGraph, JKQTPFilledCurveYErrorGraph +
\image html JKQTPfilledVerticalRangeGraph_WithLines_small.png + JKQTPFilledVerticalRangeGraph, JKQTPFilledHorizontalRangeGraph +
+ +\defgroup jkqtplotter_functiongraphs Function Graphs +\ingroup jkqtplotter_linesymbolgraphs + + + + + +
Screenshot + Classes +
\image html functionplot_small.png + JKQTPXFunctionLineGraph, JKQTPYFunctionLineGraph +
\image html evalcurve_small.png + JKQTPXYFunctionLineGraph +
+ +\defgroup jkqtplotter_parsedFgraphs Parsed Function Graphs +\ingroup jkqtplotter_linesymbolgraphs + + + + +
Screenshot + Classes +
\image html functionplot_small.png + JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph +
+ +\defgroup jkqtplotter_barssticks Barcharts, Impulse-Charts, ... +\ingroup jkqtplotter_concretegraphs + + + + + + + + +
Screenshot + Classes +
\image html barchart_small.png + JKQTPBarVerticalGraph, JKQTPBarHorizontalGraph +
\image html barchart_error_small.png + JKQTPBarVerticalErrorGraph, JKQTPBarHorizontalErrorGraph +
\image html JKQTPbarVerticalGraphStacked_small.png + JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph +
\image html impulsesplot_small.png + JKQTPImpulsesHorizontalGraph, JKQTPImpulsesVerticalGraph +
\image html impulses_errors_small.png + JKQTPImpulsesHorizontalErrorGraph, JKQTPImpulsesVerticalErrorGraph +
+ +\defgroup jkqtplotter_statgraphs Statistical Graphs (e.g. Boxplots ...) +\ingroup jkqtplotter_concretegraphs + + + + + +
Screenshot + Classes +
\image html boxplot_small.png + JKQTPBoxplotVerticalGraph, JKQTPBoxplotHorizontalGraph +
\image html JKQTPViolinplotVerticalElement_small.png + JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement +
+ +\see \ref jkqtptools_math_statistics_adaptors for shortcuts to calculate statistical properties of data and then adding a plot with the results. + +\defgroup jkqtplotter_geoplots Geometric Elements (Lines, Rectangles, ...) +\ingroup jkqtplotter_concretegraphs + + + + + + + + + + + + + +
Screenshot + Classes +
\image html symbol_filled_diamond.png + JKQTPGeoSymbol +
\image html geo_text_small.png + JKQTPGeoText +
\image html geo_line_small.png + JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines +
\image html geo_arrows_small.png + JKQTPGeoArrow +
\image html geo_rect_small.png + JKQTPGeoRectangle +
\image html geo_polygon_small.png + JKQTPGeoPolygon +
\image html geo_ellipse_small.png + JKQTPGeoEllipse +
\image html geo_arc_small.png + JKQTPGeoArc +
\image html geo_pie_small.png + JKQTPGeoPie +
\image html geo_chords_small.png + JKQTPGeoChord +
+ +Examples: + - \ref JKQTPlotterGeometricGraphs +. + +\defgroup jkqtplotter_annotations Graph Annotations +\ingroup jkqtplotter_concretegraphs + + + + + + +
Screenshot + Classes +
\image html symbol_filled_diamond.png + JKQTPGeoSymbol +
\image html geo_text_small.png + JKQTPGeoText +
\image html JKQTPHorizontalRange_small.png + JKQTPHorizontalRange, JKQTPVerticalRange +
+ +Examples: + - \ref JKQTPlotterGeometricGraphs +. + +\defgroup jkqtplotter_diverse Diverse Other Graphs (Ranges, ...) +\ingroup jkqtplotter_concretegraphs + + + + + + +
Screenshot + Classes +
\image html JKQTPPeakStreamGraphY_small.png + JKQTPPeakStreamGraph +
\image html geo_boxplot_small.png + JKQTPBoxplotVerticalElement, JKQTPBoxplotHorizontalElement +
\image html JKQTPViolinplotVerticalElement_small.png + JKQTPViolinplotVerticalElement, JKQTPViolinplotHorizontalElement +
+ +\defgroup jkqtplotter_imagelots Matrix/Image Plotting +\ingroup jkqtplotter_concretegraphs + + + + + + + + + +
Screenshot + Classes +
\image html rgbimageplot_qt_small.png + JKQTPImage +
\image html JKQTPMathImageBaseModifyNone_small.png + JKQTPMathImage, JKQTPColumnMathImage +
\image html rgbimageplots_small.png + JKQTPRGBMathImage, JKQTPColumnRGBMathImage +
\image html overlayimage_small.png + JKQTPOverlayImage +
\image html overlayimageenhanced_small.png + JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced +
\image html JKQTPColumnContourPlot_small.png + JKQTPContourPlot, JKQTPColumnContourPlot +
+ +\defgroup jkqtplotter_imagelots_elements Image Graphs +\ingroup jkqtplotter_imagelots + + + + + + + +
Screenshot + Classes +
\image html rgbimageplot_qt_small.png + JKQTPImage +
\image html JKQTPMathImageBaseModifyNone_small.png + JKQTPMathImage, JKQTPColumnMathImage +
\image html rgbimageplot_cimg_small.png + JKQTPRGBMathImage, JKQTPColumnRGBMathImage +
+ +\defgroup jkqtplotter_imagelots_overlays Image/Matrix Overlay Graphs +\ingroup jkqtplotter_imagelots + + + + + +
Screenshot + Classes +
\image html overlayimage_small.png + JKQTPOverlayImage +
\image html overlayimageenhanced_small.png + JKQTPOverlayImageEnhanced, JKQTPColumnOverlayImageEnhanced +
+ +\defgroup jkqtplotter_imagelots_tools Tool Functions & Classes for Image Drawing +\ingroup jkqtplotter_imagelots + +\defgroup jkqtplotter_imagelots_tools_LUTS Tool Functions to Build Lookup-Tables for Palettes +\ingroup jkqtplotter_imagelots_tools + +\defgroup jkqtplotter_imagelots_contour Contour Graphs (based on Image Data) +\ingroup jkqtplotter_imagelots + + + + +
Screenshot + Classes +
\image html JKQTPColumnContourPlot_small.png + JKQTPContourPlot, JKQTPColumnContourPlot +
+ + + +*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_05styling.dox b/doc/dox/jkqtplotter_styling.dox similarity index 96% rename from doc/dox/jkqtplotter_05styling.dox rename to doc/dox/jkqtplotter_styling.dox index 1aa79240b0..77815fd73c 100644 --- a/doc/dox/jkqtplotter_05styling.dox +++ b/doc/dox/jkqtplotter_styling.dox @@ -2,7 +2,7 @@ \defgroup jkqtpplotter_styling Styling System -\ingroup jkqtplotter +\ingroup jkqtplotter_general \image html stylesbanner.png @@ -70,8 +70,9 @@ Here is a table with all available ready-made styles:
\image html simple_axesoffset_plotbox.ini.png
-\see For a detailed example, see \ref JKQTPlotterStyling +\see Classes are documented in \ref jkqtpplotter_styling_classes . +
See \ref JKQTPlotterStyling for a detailed example. -*/ \ No newline at end of file +*/ diff --git a/doc/dox/jkqtplotter_stylingclassdoc.dox b/doc/dox/jkqtplotter_stylingclassdoc.dox new file mode 100644 index 0000000000..466cac0f76 --- /dev/null +++ b/doc/dox/jkqtplotter_stylingclassdoc.dox @@ -0,0 +1,13 @@ + +/*! + + +\defgroup jkqtpplotter_styling_classes Styling System Classes +\ingroup jkqtplotter_classdoc + +This group assembles all classes that for the styling system of JKQTPlotter. + +\see \ref jkqtpplotter_styling + + +*/ \ No newline at end of file diff --git a/doc/dox/jkqtplotter_usage.dox b/doc/dox/jkqtplotter_usage.dox new file mode 100644 index 0000000000..2a72265999 --- /dev/null +++ b/doc/dox/jkqtplotter_usage.dox @@ -0,0 +1,154 @@ +/*! + + + \defgroup jkqtplotter_general_usage Usage of JKQTPlotter + \ingroup jkqtplotter_general + + \defgroup jkqtplotter_general_usage_jkqtbaseplotter Usage of JKQTBasePlotter Non-Visible Class + \ingroup jkqtplotter_general_usage + + It is also possible to use it in a standalone fashion to generate plots without generating a window. + Note that the baseplotter class still requires the \c widgets+gui modules of Qt, because it contains code to e.g. + display pint or export preview dialogs! + + Here is an example of how to do this (it is taken from the command-line tool \ref JKQTPlotterDocImageRenderCmdLineTool): + + First we generate the JKQTBasePlotter object and add some data to the internal JKQTPDatastore + \code + JKQTBasePlotter plot(true); + JKQTPDatastore* ds=plot.getDatastore(); + size_t cx=ds->addCopiedColumn(QVector{-1.5,-0.5,0.5,1.5,2.5},"x"); + size_t cy=ds->addCopiedColumn(QVector{-0.75,-0.3,-0.05,0.2,0.65},"y"); + \endcode + + Now we set the range of x/y plot coordinates ... + \code + plot.setXY(-0.8,2.2,-0.5,0.7); + \endcode + and the size of the widget, i.e. the size of the plot in the windowing system. + \code + plot.setWidgetSize(150,50); + \endcode + Now we can add graphs to the plotter, e.g. + \code + JKQTPXYLineGraph* g=new JKQTPXYLineGraph(&plot); + g->setXColumn(cx); + g->setYColumn(cy); + plot.addGraph(g); + \endcode + Finally we store an image of the plot as PNG-file: + \code + plot.saveAsPixelImage("output.png", false, "png"); + \endcode + Alternatively you can obtain a QImage of the plot using JKQTBasePlotter::grabPixelImage() or copy the + image to the clipboard using JKQTBasePlotter::copyPixelImage(). Also storages as PDF and SVG is available via + JKQTBasePlotter::saveAsPDF() and JKQTBasePlotter::saveAsSVG(). + + With simlar code you can also integrate JKQTBasePlotter into your own widgets. + + + + + + + + \defgroup jkqtplotter_general_usage_jkqtplotter Usage of JKQTPlotter Widget + \ingroup jkqtplotter_general_usage + + JKQTPlotter is a plotter widget which wraps around a JKQTBasePlotter instanced that does the actual drawing. + A basic usage of JKQTPlotter looks like this: + + \code{.cpp} + // create a new JKQTPlotter instance + JKQTPlotter* plot = new JKQTPlotter(parentWidget); + + // fill two vectors with dtaa for a graph: + QVector X, Y; + fillDataVectors(X, Y); + + // make data available to the internal datastore of the plotter: + size_t columnX=plot->getDatastore()->addCopiedColumn(X, "x"); + size_t columnY=plot->getDatastore()->addCopiedColumn(Y, "y"); + + // create a graph/curve, which displays the data + JKQTPXYLineGraph* graph1=new JKQTPXYLineGraph(plot); + graph1->setXColumn(columnX); + graph1->setYColumn(columnY); + graph1->setTitle(QObject::tr("graph title")); + plot->addGraph(graph1); + + // autoscale the plot + plot->zoomToFit(); + // alternatively set the axis dimension by hand: + plot->setXY(-10,10,-10,10); + \endcode + + The result should look something like this: + + \image html simpletest.png + + Starting from this basic example, you can observe several important principles: +
    +
  1. 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). +
  2. Naming conventions (excerpt from \ref jkqtplotter_naming ): +
      +
    • \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements +
    • plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve +
    • \b graph is a single curve/image/geometric element in the plot +
    • geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore, + but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol +
    • \b key is the legend of the plot +
    • coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale) +
    +
  3. 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. +
  4. 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). +
  5. If you want to style the plot itself, you need to set properties of the underlying JKQTBasePloter instance, which + is accessible through JKQTPlotter::getPlotter(). If you want to style the coordinate axes, you can acces their + representing objects by caling JKQTPlotter::getXAxis() or JKQTPlotter::getYAxis(). +
+ + \see \ref JKQTPlotterSimpleTest and \see JKQTPlotterQtCreator + + + + + + + \defgroup jkqtplotter_general_usage_qtcreator How to use JKQTPlotter in the Qt Form Designer + \ingroup jkqtplotter_general_usage + + + As JKQTPlotter is a standard Qt widget, you can also use it in Qt UI-files designed with the Qt From Designer (e.g. from within QTCreator). + For this to work you have to use the Promote QWidget"-feature of the form designer. The steps you need to take are detailed below: +
    +
  1. 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 +
  2. +
  3. 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 +
  4. +
  5. 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 +
  6. +
+ + \see \ref JKQTPlotterQtCreator
Also see \ref JKQTPlotterStyling for another example of using the Qt UI Designer with JKQTPlotter + +*/ + + + diff --git a/doc/dox/whatsnew.dox b/doc/dox/whatsnew.dox index 644e8f7d83..87f08831b2 100644 --- a/doc/dox/whatsnew.dox +++ b/doc/dox/whatsnew.dox @@ -134,11 +134,11 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include: \subsection page_whatsnew_TRUNK_DOWNLOAD trunk: Download -This release is available from: - - Source code branch: https://github.com/jkriege2/JKQtPlotter - - Source Code download (ZIP): https://github.com/jkriege2/JKQtPlotter/archive/master.zip - - Git-Link: https://github.com/jkriege2/JKQtPlotter.git -. +This release is available from @@ -152,7 +152,7 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
  • fixed issue #38: Buffer overflow, thanks to user:zertyz
  • fixed issue #43: jkqtp_format() had undefined behaviour, thanks to user:Makis42
  • fixed issue #41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF , thanks to user:smistad
  • -
  • fixed issue #37: CMake installs things into $PREFIX/doc/*.txt , thanks to user:certik
  • +
  • fixed issue #37: CMake installs things into $PREFIX/doc/ *.txt , thanks to user:certik
  • fixed issue #45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath', thanks to user:abdedixit
  • merged PR #47: Some minor build fixes, thanks to user:patstew
  • fixed issue #48: Cannot \#include QPrintPreviewWidget, thanks to user:schlenger
  • @@ -194,10 +194,10 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include: \subsection page_whatsnew_V4_0_0_DOWNLOAD V4.0.0: Download -This release is available from: - - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v4.0.0 - - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v4.0.0 (2021-April-xx) -. +This release is available from @@ -264,10 +264,10 @@ Changes, compared to \ref page_whatsnew_V2018_08 "v2018.08" include: \subsection page_whatsnew_V2019_11_DOWNLOAD v2019.11: Download -This release is available from: - - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2019.11 - - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2019.11.1 (2019-Dec-05) -. +This release is available from @@ -276,17 +276,17 @@ This release is available from: \section page_whatsnew_V2018_08 v2018.08: Minor Modifications (Final QuickFit3-compatible Version) \subsection page_whatsnew_V2018_08_OVERVIEW v2018.08: Overview -This is the final version of JKQTPlotter, which is still compatible with the QuickFit 3.0 code base. It contains minor changes as compared to \ref page_whatsnew_V2015_10 "v2015.10": - - new: added Qt data model to switch graphs on/off - - update: some improvements to test programs -. +This is the final version of JKQTPlotter, which is still compatible with the QuickFit 3.0 code base. It contains minor changes as compared to \ref page_whatsnew_V2015_10 "v2015.10"
      +
    • new: added Qt data model to switch graphs on/off +
    • update: some improvements to test programs +
    \subsection page_whatsnew_V2018_08_DOWNLOAD v2018.08: Download -This release is available from: - - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2018.08 - - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2018.08 (2018-Aug-19) -. +This release is available from @@ -302,10 +302,10 @@ This is the initial release of the library. It was developed initially as part o \subsection page_whatsnew_V2015_10_DOWNLOAD v2015.10: Download -This release is available from: - - Source code branch: https://github.com/jkriege2/JKQtPlotter/tree/v2015.10 - - Latest Release/Tag: https://github.com/jkriege2/JKQtPlotter/releases/tag/v2015.10 (2015-Oct-20) -. +This release is available from */ diff --git a/doc/images/plot_elements.greenshot b/doc/images/plot_elements.greenshot new file mode 100644 index 0000000000..65129f7c50 Binary files /dev/null and b/doc/images/plot_elements.greenshot differ diff --git a/doc/images/plot_elements.png b/doc/images/plot_elements.png new file mode 100644 index 0000000000..2a65df6441 Binary files /dev/null and b/doc/images/plot_elements.png differ diff --git a/examples/simpletest/simpletest.cpp b/examples/simpletest/simpletest.cpp index 3aea733d42..7821b7b38f 100644 --- a/examples/simpletest/simpletest.cpp +++ b/examples/simpletest/simpletest.cpp @@ -6,7 +6,7 @@ #include #include "jkqtplotter/jkqtplotter.h" -#include "jkqtplotter/graphs/jkqtpscatter.h" +#include "jkqtplotter/graphs/jkqtplines.h" #include "jkqtpexampleapplication.h" diff --git a/lib/jkqtplotter/jkqtpbaseplotter.h b/lib/jkqtplotter/jkqtpbaseplotter.h index e6331a21c5..b4499c5946 100644 --- a/lib/jkqtplotter/jkqtpbaseplotter.h +++ b/lib/jkqtplotter/jkqtpbaseplotter.h @@ -334,46 +334,10 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPPaintDeviceAdapter { * Most commonly this invisible plotter class is used as basis for the widget JKQTPlotter. * \see JKQTPlotter * - * \subsection jkqtplotter_usage_baseplotter_standalonw JKQTBasePlotter Standalone Usage + * \subsection jkqtplotter_usage_baseplotter_standalone JKQTBasePlotter Standalone Usage * - * But it is also possible to use it in a standalone fashion to generate plots without generating a window. - * Note that the baseplotter class still requires the \c widgets+gui modules of Qt, because it contains code to e.g. - * display pint or export preview dialogs! + * \copydetails jkqtplotter_general_usage_jkqtplotter * - * Here is an example of how to do this (it is taken from the command-line tool \ref JKQTPlotterDocImageRenderCmdLineTool): - * - * First we generate the JKQTBasePlotter object and add some data to the internal JKQTPDatastore - * \code - * JKQTBasePlotter plot(true); - * JKQTPDatastore* ds=plot.getDatastore(); - * size_t cx=ds->addCopiedColumn(QVector{-1.5,-0.5,0.5,1.5,2.5},"x"); - * size_t cy=ds->addCopiedColumn(QVector{-0.75,-0.3,-0.05,0.2,0.65},"y"); - * \endcode - * - * Now we set the range of x/y plot coordinates ... - * \code - * plot.setXY(-0.8,2.2,-0.5,0.7); - * \endcode - * and the size of the widget, i.e. the size of the plot in the windowing system. - * \code - * plot.setWidgetSize(150,50); - * \endcode - * Now we can add graphs to the plotter, e.g. - * \code - * JKQTPXYLineGraph* g=new JKQTPXYLineGraph(&plot); - * g->setXColumn(cx); - * g->setYColumn(cy); - * plot.addGraph(g); - * \endcode - * Finally we store an image of the plot as PNG-file: - * \code - * plot.saveAsPixelImage("output.png", false, "png"); - * \endcode - * Alternatively you can obtain a QImage of the plot using grabPixelImage() or copy the - * image to the clipboard using copyPixelImage(). ALso storages as PDF and SVG is available via - * saveAsPDF() and saveAsSVG(). - * - * With simlar code you can also integrate JKQTBasePlotter into your own widgets. */ class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotter: public QObject { Q_OBJECT diff --git a/lib/jkqtplotter/jkqtpbaseplotterstyle.h b/lib/jkqtplotter/jkqtpbaseplotterstyle.h index 52a0a2d62a..58707bf5ea 100644 --- a/lib/jkqtplotter/jkqtpbaseplotterstyle.h +++ b/lib/jkqtplotter/jkqtpbaseplotterstyle.h @@ -40,7 +40,7 @@ /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of a JKQTBasePlotter - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, \ref jkqtpplotter_styling */ @@ -171,14 +171,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTBasePlotterStyle { }; /** \brief returns the system-wide default JKQTPlotterStyle - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPGetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling */ JKQTPLOTTER_LIB_EXPORT JKQTBasePlotterStyle& JKQTPGetSystemDefaultBaseStyle(); /** \brief replaces the system-wide default JKQTPlotterStyle with the given \a newStyle - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPGetSystemDefaultStyle(), JKQTPSetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling */ diff --git a/lib/jkqtplotter/jkqtpcoordinateaxes.h b/lib/jkqtplotter/jkqtpcoordinateaxes.h index f3151f3890..7c0ca5c340 100644 --- a/lib/jkqtplotter/jkqtpcoordinateaxes.h +++ b/lib/jkqtplotter/jkqtpcoordinateaxes.h @@ -39,7 +39,7 @@ class JKQTBasePlotter; /*! \brief this virtual class is the base for any type of coordinate axis, to be drawn by JKQTBasePlotter. \ingroup jkqtpbaseplotter_elements - This class implements all the functionality needed for a coordinate axis: + Class derived from JKQTPCoordinateAxis implements all the functionality needed for a coordinate axis: - transform world to screen coordinates and vice versa - draw the axis (implemented by child classes!) with these elements: axis lines, ticks, tick labels, axis label, x/y=0 axis - measure the axes in screen coordinates @@ -263,7 +263,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxis: public QObject { inline double getUserTickSpacing() const { return this->userTickSpacing; } /** \copydoc userLogTickSpacing */ inline double getUserLogTickSpacing() const { return this->userLogTickSpacing; } - /** \copydoc JKQTPCoordinateAxisStyle::labelType */ + /** \copydoc JKQTPCoordinateAxisStyle::tickLabelType */ inline JKQTPCALabelType getTickLabelType() const { return this->axisStyle.tickLabelType; } /** \copydoc axisLabel */ inline QString getAxisLabel() const { return this->axisLabel; } @@ -472,7 +472,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxis: public QObject { /** \copydoc userLogTickSpacing */ void setUserLogTickSpacing (double __value); - /** \copydoc JKQTPCoordinateAxisStyle::labelType */ + /** \copydoc JKQTPCoordinateAxisStyle::tickLabelType */ void setTickLabelType (JKQTPCALabelType __value); /** \copydoc JKQTPCoordinateAxisStyle::tickMode */ @@ -867,8 +867,6 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVerticalAxis: public JKQTPCoordinateAxis { * \param labelOffset offset of the label from ( \a xx , \a yy ) in pt, this is typically equal to \c tickOuterLength+tickLabelDistance * \param label text to display * \param fontSize the fontSize of the label (in pt) - * \param ascentMax maximum ascent of all tick labels - * \param descentMax maximum descent of all tick labels * \param isMinor indicates whether the axis tick is a minor tick */ void drawTickLabel1(JKQTPEnhancedPainter& painter, double xx, double yy, double labelOffset, const QString &label, double fontSize, bool isMinor=false) ; @@ -880,8 +878,6 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVerticalAxis: public JKQTPCoordinateAxis { * \param labelOffset offset of the label from ( \a xx , \a yy ) in pt, this is typically equal to \c tickOuterLength+tickLabelDistance * \param label text to display * \param fontSize the fontSize of the label (in pt) - * \param ascentMax maximum ascent of all tick labels - * \param descentMax maximum descent of all tick labels * \param isMinor indicates whether the axis tick is a minor tick */ void drawTickLabel2(JKQTPEnhancedPainter& painter, double xx, double yy, double labelOffset, const QString &label, double fontSize, bool isMinor=false) ; diff --git a/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h b/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h index 480f5f226d..7bea43d2e6 100644 --- a/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h +++ b/lib/jkqtplotter/jkqtpcoordinateaxesstyle.h @@ -31,7 +31,7 @@ class JKQTBasePlotterStyle; // forward /** \brief Support Class for JKQTPCoordinateAxis, and summarizes all properties that define the visual styling of a grid (minor or major), associated with a JKQTPCoordinateAxis - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling * @@ -71,7 +71,7 @@ public: /** \brief Support Class for JKQTPCoordinateAxis, which summarizes all properties that define the visual styling of a JKQTPCoordinateAxis - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling * @@ -215,7 +215,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPCoordinateAxisStyle { /** \brief Support Class for JKQTPCoordinateAxis, which summarizes all properties that define the visual styling of a JKQTPCoordinateAxis * used for colorbars outside the plot - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * The major difference between this dervied version and the base JKQTPCoordinateAxisStyle are differently initialized members. * \see JKQTPCoordinateAxis, \ref jkqtpplotter_styling diff --git a/lib/jkqtplotter/jkqtpdatastorage.h b/lib/jkqtplotter/jkqtpdatastorage.h index 725abb7888..79a5a29ef5 100644 --- a/lib/jkqtplotter/jkqtpdatastorage.h +++ b/lib/jkqtplotter/jkqtpdatastorage.h @@ -50,7 +50,7 @@ class JKQTPColumnBackInserter; // forward declaration /** \brief the types of data in one JKQTdatastoreItem - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \c JKQTPSingleColumn: * \verbatim @@ -86,7 +86,7 @@ enum class JKQTPDatastoreItemFormat { }; /** \brief This class manages data columns (with entries of type \c double ), used by JKQTPlotter/JKQTBasePlotter to represent data for plots - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \see \ref JKQTPlotterBasicJKQTPDatastore for a detailed description of how to use this class for data management! * @@ -1434,7 +1434,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPDatastore{ /** \brief internally stores information about one data column. See JKQTPDatastore for more information. - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * \internal * * \see JKQTPDatastore @@ -1643,7 +1643,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPColumn { #pragma pack(push,1) /** \brief iterator over the data in the column of a JKQTPDatastore - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \see JKQTPColumn, JKQTPDatastore::begin(), JKQTPDatastore::end(), JKQTPDatastore, JKQTPConstColumnIterator */ @@ -1908,7 +1908,7 @@ class JKQTPColumnIterator { /** \brief iterator, which allows to insert into a column of a JKQTPDatastore - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \see JKQTPDatastore::backInserter(), JKQTPDatastore, http://www.cplusplus.com/reference/iterator/insert_iterator/ */ @@ -1954,7 +1954,7 @@ class JKQTPColumnBackInserter { }; /** \brief iterator over the data in the column of a JKQTPDatastore - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \see JKQTPColumn, JKQTPDatastore::begin(), JKQTPDatastore::end(), JKQTPDatastore, JKQTPColumnIterator */ @@ -2234,7 +2234,7 @@ class JKQTPColumnConstIterator { /** \brief this represents one chunk of memory which can represent one or more columns of data for JKQTBasePlotter. * See JKQTPDatastore for more information. - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * Each chunk of memory is pointed at by a simple double* pointer \c data. the memory layout of the memory layout of * the RAM segment pointed at by \c data is determined by the parameter \c dataformat: @@ -2472,7 +2472,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPDatastoreItem { /** \brief QAbstractTableModel descendent that allows to view data in a JKQTPDatastore - * \ingroup jkqtpdatastorage + * \ingroup jkqtpdatastorage_classes * * \see JKQTPDatastore */ diff --git a/lib/jkqtplotter/jkqtpgraphsbasestyle.h b/lib/jkqtplotter/jkqtpgraphsbasestyle.h index 2644306186..4b10af894d 100644 --- a/lib/jkqtplotter/jkqtpgraphsbasestyle.h +++ b/lib/jkqtplotter/jkqtpgraphsbasestyle.h @@ -41,7 +41,7 @@ class JKQTBasePlotterStyle; // forward /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of graphs - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, \ref jkqtpplotter_styling */ @@ -112,7 +112,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTGraphsSpecificStyleProperties { /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of geometric elements - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, \ref jkqtpplotter_styling */ @@ -162,7 +162,7 @@ public: /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of annotation elements - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, \ref jkqtpplotter_styling */ @@ -210,7 +210,7 @@ public: /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of a JKQTBasePlotter - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, \ref jkqtpplotter_styling */ diff --git a/lib/jkqtplotter/jkqtpkeystyle.h b/lib/jkqtplotter/jkqtpkeystyle.h index bb98b6a928..7cc0927b02 100644 --- a/lib/jkqtplotter/jkqtpkeystyle.h +++ b/lib/jkqtplotter/jkqtpkeystyle.h @@ -32,7 +32,7 @@ class JKQTBasePlotterStyle; // forward /** \brief Support Class for JKQTBasePlotter, which summarizes all properties that define the visual styling of the key in a JKQTBasePlotter - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTBasePlotter, JKQTBasePlotterStyle, \ref jkqtpplotter_styling */ diff --git a/lib/jkqtplotter/jkqtplotter.h b/lib/jkqtplotter/jkqtplotter.h index 5827397956..4eb496041a 100644 --- a/lib/jkqtplotter/jkqtplotter.h +++ b/lib/jkqtplotter/jkqtplotter.h @@ -73,70 +73,8 @@ JKQTPLOTTER_LIB_EXPORT void initJKQTPlotterResources(); * * \section JKQTPLOTTER_BASICUSAGE Basic Usage of JKQTPlotter * - * JKQTPlotter is a plotter widget which wraps around a JKQTBasePlotter instanced that does the actual drawing. - * A basic usage of JKQTPlotter looks like this: + * \copydetails jkqtplotter_general_usage_jkqtbaseplotter * - * \code{.cpp} - * // create a new JKQTPlotter instance - * JKQTPlotter* plot = new JKQTPlotter(parentWidget); - * - * // fill two vectors with dtaa for a graph: - * QVector X, Y; - * fillDataVectors(X, Y); - * - * // make data available to the internal datastore of the plotter: - * size_t columnX=plot->getDatastore()->addCopiedColumn(X, "x"); - * size_t columnY=plot->getDatastore()->addCopiedColumn(Y, "y"); - * - * // create a graph/curve, which displays the data - * JKQTPXYLineGraph* graph1=new JKQTPXYLineGraph(plot); - * graph1->setXColumn(columnX); - * graph1->setYColumn(columnY); - * graph1->setTitle(QObject::tr("graph title")); - * plot->addGraph(graph1); - * - * // autoscale the plot - * plot->zoomToFit(); - * // alternatively set the axis dimension by hand: - * plot->setXY(-10,10,-10,10); - * \endcode - * - * The result should look something like this: - * - * \image html simpletest.png - * - * Starting from this basic example, you can observe several important principles: - *
      - *
    1. 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). - *
    2. Naming conventions (excerpt from \ref jkqtplotter_naming ): - *
        - *
      • \b plot is the complete drawn image, including the axes, the graphs, the key and all other visual elements - *
      • plot element any sub element of the plot, e.g. a single coordinate axis, the key, but also any graph/curve - *
      • \b graph is a single curve/image/geometric element in the plot - *
      • geometric element is a special graph that does not represent a curve based on data from the JKQTPDatastore, - * but a single graphic element, like a rectangle/circle/line/..., some text, a single symbol - *
      • \b key is the legend of the plot - *
      • coordinate axis is each of the x- or y-axis (there might be addition axes, e.g. when showing a color-scale) - *
      - *
    3. 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. - *
    4. 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). - *
    5. If you want to style the plot itself, you need to set properties of the underlying JKQTBasePloter instance, which - * is accessible through JKQTPlotter::getPlotter(). If you want to style the coordinate axes, you can acces their - * representing objects by caling JKQTPlotter::getXAxis() or JKQTPlotter::getYAxis(). - *
    - * - * \see \ref JKQTPlotterSimpleTest and \see JKQTPlotterQtCreator * * \section JKQTPLOTTER_SYNCMULTIPLOT Synchronizing Several Plots * @@ -420,25 +358,7 @@ JKQTPLOTTER_LIB_EXPORT void initJKQTPlotterResources(); * * \section JKQTPLOTTER_USEQTCREATOR How to use JKQTPlotter in the Qt Form Designer * - * As JKQTPlotter is a standard Qt widget, you can also use it in Qt UI-files designed with the Qt From Designer (e.g. from within QTCreator). - * For this to work you have to use the Promote QWidget"-feature of the form designer. The steps you need to take are detailed below: - *
      - *
    1. 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 - *
    2. - *
    3. 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 - *
    4. - *
    5. 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 - *
    6. - *
    - * - * \see \ref JKQTPlotterQtCreator
    Also see \ref JKQTPlotterStyling for another example of using the Qt UI Designer with JKQTPlotter - * + * \copydetails jkqtplotter_general_usage_qtcreator */ class JKQTPLOTTER_LIB_EXPORT JKQTPlotter: public QWidget { Q_OBJECT diff --git a/lib/jkqtplotter/jkqtplotterstyle.h b/lib/jkqtplotter/jkqtplotterstyle.h index bcca14ba13..b685831c50 100644 --- a/lib/jkqtplotter/jkqtplotterstyle.h +++ b/lib/jkqtplotter/jkqtplotterstyle.h @@ -33,7 +33,7 @@ /** \brief Support Class for JKQTPlotter, which summarizes all properties that define the visual styling of a JKQTPlotter - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPlotter, \ref jkqtpplotter_styling */ @@ -158,14 +158,14 @@ public: /** \brief returns the system-wide default JKQTPlotterStyle - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPSetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling */ JKQTPLOTTER_LIB_EXPORT JKQTPlotterStyle& JKQTPGetSystemDefaultStyle(); /** \brief replaces the system-wide default JKQTPlotterStyle with the given \a newStyle - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPGetSystemDefaultStyle(), JKQTPGetSystemDefaultBaseStyle(), JKQTPSetSystemDefaultBaseStyle(), \ref jkqtpplotter_styling */ diff --git a/lib/jkqtplotter/jkqtptools.h b/lib/jkqtplotter/jkqtptools.h index 8ae288abb3..afe10d3def 100644 --- a/lib/jkqtplotter/jkqtptools.h +++ b/lib/jkqtplotter/jkqtptools.h @@ -250,7 +250,7 @@ typedef QHash JKQTPMouseMoveAction typedef JKQTPMouseMoveActionsHashMap::const_iterator JKQTPMouseMoveActionsHashMapIterator; /** \brief Specifies how a fill-color is derived from a given color - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes */ struct JKQTPLOTTER_LIB_EXPORT JKQTPColorDerivationMode { @@ -342,7 +342,7 @@ public: }; /** \brief use a JKQTPColorDerivationMode to derive a color from \a col as specified - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \param mode the mode of how to modify the given color \a basecolor * \param basecolor the color in which to base the derivation @@ -352,7 +352,7 @@ public: JKQTPLOTTER_LIB_EXPORT QColor JKQTPGetDerivedColor(JKQTPColorDerivationMode mode, const QColor& basecolor); /** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alphaF - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * \see QColorWithAlpha() */ inline QColor QColorWithAlphaF(const QColor& color, qreal alphaF) { @@ -362,7 +362,7 @@ inline QColor QColorWithAlphaF(const QColor& color, qreal alphaF) { } /** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alpha - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * \see QColorWithAlphaF() */ inline QColor QColorWithAlpha(const QColor& color, int alpha) { @@ -372,13 +372,13 @@ inline QColor QColorWithAlpha(const QColor& color, int alpha) { } /** \brief convert a JKQTPColorDerivationMode to a QString - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see String2JKQTPColorDerivationMode(), JKQTPColorDerivationMode */ JKQTPLOTTER_LIB_EXPORT QString JKQTPColorDerivationMode2String(JKQTPColorDerivationMode mode); /** \brief convert a QString (created by JKQTPColorDerivationMode2String() ) to JKQTPColorDerivationMode - * \ingroup jkqtpplotter_styling + * \ingroup jkqtpplotter_styling_classes * * \see JKQTPColorDerivationMode2String(), JKQTPColorDerivationMode */ @@ -452,7 +452,7 @@ enum JKQTPCALabelType { JKQTPCALTfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ \frac{1}{2} \f$ \image html axisstyle/JKQTPCALTfrac.png */ JKQTPCALTslashfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTslashfrac.png */ JKQTPCALTsfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTsfrac.png */ - JKQTPCALTintfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \$ -3\frac{1}{2} \f$ \image html axisstyle/JKQTPCALTintfrac.png */ + JKQTPCALTintfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ -3\frac{1}{2} \f$ \image html axisstyle/JKQTPCALTintfrac.png */ JKQTPCALTintslashfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTintslashfrac.png */ JKQTPCALTintsfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTintsfrac.png */