mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-11-15 18:15:52 +08:00
48 lines
2.4 KiB
Plaintext
48 lines
2.4 KiB
Plaintext
/*!
|
|
|
|
\defgroup jkqtplotter_basicprinciples Basic Principles of JKQTPlotter
|
|
\ingroup jkqtplotter_general
|
|
|
|
This page documents some basic principles behind the design of the JKQTPlotter library.
|
|
|
|
\tableofcontents
|
|
|
|
\section jkqtplotter_basicprinciples_datastorage Datastorage
|
|
Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore().
|
|
This datastore can either own its data (which is done here, as we copy the data into the store
|
|
e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
|
|
data needs to be available as array of \c double values).
|
|
|
|
In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator
|
|
interface to access the data.
|
|
|
|
\see JKQTPDatastore,
|
|
\ref jkqtpdatastorage ,
|
|
\ref jkqtp_extut_datamanagement
|
|
|
|
\section jkqtplotter_basicprinciples_graphs_and_mixins Graphs & Mix-Ins
|
|
|
|
Each graph is represented by a class derived from JKQTPPlotElement (e.g. JKQTPXYLineGraph,
|
|
which shows data as a scatter of symbols that may (or may not) be connected by a line).
|
|
|
|
There is a complete hirarchy of graph base classes, from which different graphs (or more general plot elements) are derived,
|
|
see \ref jkqtplotter_graphsgroup_classstructure_basics .
|
|
|
|
|
|
Constructing a graph class does not yet add it to the plotter. To add it, call JKQTBasePlotter::addGraph() / JKQTPlotter::addGraph(). Only
|
|
after this step, the graph is displayed. You can modify the apperance of the graph (e.g. colors, name in the key ...) by setting
|
|
properties in the graph class instance.
|
|
|
|
Most graph peroperties are inserted into the graph class via <a href="https://en.wikipedia.org/wiki/Mixin">mix-in</a> classes.
|
|
A Mixin allows to inject the same code into different classes, but does not require these classes to be in the same inheritance
|
|
tree. The style of mix-in programming used in the JKQTPlotter library is multiple-inheritance. So a graph class is derived from
|
|
JKQTPGraph but also has additional parent classes from \ref jkqtplotter_basegraphs_stylemixins like:
|
|
- JKQTPGraphLineStyleMixin which provides line-styling
|
|
- JKQTPGraphSymbolStyleMixin which provides styling for graph symbols
|
|
- JKQTPGraphFillStyleMixin which provides fill styles
|
|
- ...
|
|
.
|
|
|
|
|
|
|
|
*/ |