/*!
\page exampleTutorialProjects Example & Tutorial Projects 

This section assembles some simple examples of usage. 
You can find more (complex) examples for the classes in this repository in the subfolder "test". 
All test-projects are Qt-projects that use qmake to build. You can load them into QtCreator easily.

\tableofcontents

\section jkqtp_extut_jkqtplotter Examples & Tutorials for JKQTPlotter

\subsection jkqtp_extut_plotstyles Examples for Different Plot Data Styles

<table>
<tr><th>Screenshot<th>Description<th>Notes
<tr><td> \image html simpletest_small.png 
    <td> \subpage JKQTPlotterSimpleTest 
	  <td> `JKQTPXYLineGraph` <br> C++-style QVector arrays of data 
<tr><td> \image html scatter_small.png 
    <td> \subpage JKQTPlotterscatter 
	  <td> `JKQTPXYScatterGraph` <br> Iterator-Interface for JKQTDatastore
<tr><td> \image html scatter_customsymbol_small.png 
    <td> \subpage JKQTPlotterscatterCustomSymbol 
	  <td> `JKQTPXYScatterGraph` <br>custom symbols JKQTPCharacterSymbol, JKQTPFilledCharacterSymbol, JKQTPRegisterCustomGraphSymbol()<br> Iterator-Interface for JKQTDatastore
<tr><td> \image html speed_small.png
    <td> \subpage JKQTPlotterSpeedTest
    <td> `JKQTPXYLineGraph` <br> external `std::array<double,N>` data, not owned by datastore <br> live-data, measure plotting speed <br> tipps to increas plotting speed 
<tr><td> \image html symbols_and_styles_small.png
    <td> \subpage JKQTPlotterSymbolsAndStyles
    <td> `JKQTPXYLineGraph` <br> C++ vector of data <br> setting line styles and symbol styles <br> automatic graph coloring 
<tr><td> \image html stepplots_small.png
    <td> \subpage JKQTPlotterSpecialStepLinePlot
    <td> `JKQTPSpecialLineHorizontalGraph` <br> C++ vector of data <br> different step/special line modes, filled and line-only 
<tr><td> \image html symbols_and_errors_small.png
    <td> \subpage JKQTPlotterSymbolsErrors
    <td> `JKQTPXYLineErrorGraph` <br> C-style arrays of data 
<tr><td> \image html errorbarstyles_small.png
    <td> \subpage JKQTPlotterErrorBarStyles
    <td> `JKQTPXYLineErrorGraph` <br> different styles of error indicators for x- and y-errors <br> C++-style QVector for data <br> styling error indicators <br> moving key and formatting plotter grid 
<tr><td> \image html barchart_small.png
    <td> \subpage JKQTPlotterBarcharts
    <td> `JKQTPBarVerticalGraph` <br> C-style arrays of data 
<tr><td> \image html barchart_errorbars_small.png
    <td> \subpage JKQTPlotterBarchartsErrorBars
    <td> `JKQTPBarVerticalErrorGraph` <br>  JKQTPDatastore::addColumnCalculatedFromColumn()
<tr><td> \image html barchart_twocolor_small.png
    <td> \subpage JKQTPlotterBarchartsTwoColorFilling
    <td> `JKQTPBarVerticalGraph` <br> JKQTPDatastore::addColumnCalculatedFromColumn()
<tr><td> \image html barchart_customdrawfunctor_small.png
    <td> \subpage JKQTPlotterBarchartsFunctorFilling
    <td> `JKQTPBarVerticalGraph` <br> JKQTPDatastore::addColumnCalculatedFromColumn()
<tr><td> \image html barchart_functorfill_small.png
    <td> \subpage JKQTPlotterBarchartsCustomDrawFunctor
    <td> `JKQTPBarVerticalGraph` <br> JKQTPDatastore::addColumnCalculatedFromColumn()
<tr><td> \image html stackedbars_small.png
    <td> \subpage JKQTPlotterStackedBarChart
    <td> `JKQTPBarVerticalStackableGraph`, `JKQTPBarHorizontalStackableGraph` <br> C++-style vectors of data 
<tr><td> \image html filledgraphs_small.png
    <td> \subpage JKQTPlotterFilledGraphs
    <td> `JKQTPFilledCurveXGraph`/`JKQTPFilledCurveYGraph` <br> setting/altering data in `JKQTPDatstore` directly <br>  transparent plots <br> calculating histograms 
<tr><td> \image html wiggleplots_small.png
    <td> \subpage JKQTPlotterWigglePlots
    <td> `JKQTPFilledCurveXGraph`/`JKQTPFilledCurveYGraph` <br> setting/altering data in `JKQTPDatstore` directly <br>  data-depentend coloring <br> random-walks <br> seismographic data
<tr><td> \image html filledgraphs_errors_small.png
    <td> \subpage JKQTPlotterFilledGraphsErrorBars
    <td> `JKQTPFilledCurveXErrorGraph`/`JKQTPFilledCurveYErrorGraph` 
<tr><td> \image html impulsesplot_small.png
    <td> \subpage JKQTPlotterImpulsePlots
    <td> `JKQTPImpulsesVerticalGraph` and `JKQTPImpulsesHorizontalGraph` <br> C++-style QVector as plot data 
<tr><td> \image html paramscatterplot_small.png
    <td> \subpage JKQTPlotterParamScatter
    <td> `JKQTPXYParametrizedScatterGraph` <br> C++-style QVector as plot data <br> modify scatter/points/line-graph properties by data 
<tr><td> \image html paramscatterplot_customsymbol_small.png
    <td> \subpage JKQTPlotterparamscatterCustomSymbol
    <td> `JKQTPXYParametrizedScatterGraph` <br>custom and varying symbols using JKQTPRegisterCustomGraphSymbol()<br>iterator interface to `JKQTPDatastore` 
<tr><td> \image html paramscatterplot_image_small.png
    <td> \subpage JKQTPlotterParamScatterImage
    <td> `JKQTPXYParametrizedScatterGraph` <br> C++-style QVector as plot data <br> rectangular arrangement of scatters <br> generative computer graphics 
<tr><td> \image html parametriccurve_small.png
    <td> \subpage JKQTPlotterParametricCurves
    <td> `JKQTPXYLineGraph` and `JKQTPXYParametrizedScatterGraph` <br> C++-style QVector as plot data <br> parametric curve plotting 
<tr><td> \image html functionplot_small.png
    <td> \subpage JKQTPlotterFunctionPlots
    <td> `JKQTPXFunctionLineGraph`  <br> diretly plotting C/C++-functions 
<tr><td> \image html parsedfunctionplot_small.png
    <td> \subpage JKQTPlotterParsedFunctionPlot
    <td> `JKQTPXParsedFunctionLineGraph`  <br> plotting functions with the internal math equation parser/evaluator 
<tr><td> \image html evalcurve_small.png
    <td> \subpage JKQTPlotterEvalCurves
    <td> `JKQTPXYFunctionLineGraph`
<tr><td> \image html boxplot_small.png
    <td> \subpage JKQTPlotterBoxplotsGraphs
    <td> `JKQTPBoxplotVerticalGraph`, `JKQTPBoxplotHorizontalGraph`, ...
<tr><td> \image html violinplot_small.png
    <td> \subpage JKQTPlotterViolinplotGraphs
    <td> `JKQTPViolinplotVerticalElement`, `JKQTPViolinplotHorizontalElement`, ...
<tr><td> \image html vectorfield_small.png
    <td> \subpage JKQTPlotterVectorFieldExample
    <td> `JKQTPVectorFieldGraph`
<tr><td> \image html paramvectorfield_small.png
    <td> \subpage JKQTPParametrizedVectorFieldGraphExample
    <td> `JKQTPParametrizedVectorFieldGraph`
<tr><td> \image html financialgraphs_small.png
    <td> \subpage JKQTPlotterFinancialChartExample
    <td> `JKQTPFinancialGraph` (Candlestick/OHLC graphs), date-axis, rotated labels
</table>


\subsection jkqtp_extut_geometric Examples for Geometric Forms, Arrows, Annotaions ...

<table>
<tr><th> Screenshot    <th> Description   <th> Notes         
<tr><td> \image html geometric_small.png
    <td> \subpage JKQTPlotterGeometricGraphs
    <td> `JKQTPGeometricPlotElement`, `JKQTPGeoArc`, `JKQTPGeoLine`, `JKQTPGeoRectangle`, ...
<tr><td> \image html geo_simple_small.png
    <td> \subpage JKQTPlotterGeometricGraphsSimple
    <td> `JKQTPGeoEllipse`, `JKQTPGeoArc`, `JKQTPGeoChord`, `JKQTPGeoPie`
<tr><td> \image html geo_arrows_small.png
    <td> \subpage JKQTPlotterGeometricArrows
    <td> `JKQTPGeoArrow`, ...
<tr><td> \image html geo_bezier_small.png
    <td> \subpage JKQTPlotterGeometricBezier
    <td> `JKQTPGeoBezierCurve`, ...
<tr><td> \image html geo_coordinateaxis0_small.png
    <td> \subpage JKQTPlotterGeometricCoordinateAxis0
    <td> `JKQTPCoordinateAxisStyle::drawMode0`, `JKQTPGeoPolygon`, `JKQTPGeoEllipse`
<tr><td> \image html JKQTPGLSimpleBoxAndLineONLYLABELS_small.png
    <td> \subpage JKQTPlotterGraphLabelsExample
    <td> `JKQTPXYGraphLabels`
</table>

\subsection jkqtp_extut_keyaxesstyles  Examples for Styling the Plot, Keys, Axes, ...

<table>
<tr><th> Screenshot    <th> Description   <th> Notes         
<tr><td> \image html logaxes_small.png
    <td> \subpage JKQTPlotterLogAxes
    <td> `JKQTPXYLineGraph` and `JKQTPGeoText` <br> C++ vector of data <br> logarithmic axes and styling <br> plot line styles <br> internal LaTeX parser <br> add commenting text to a graph 
<tr><td> \image html dateaxes_timeaxis_small.png
    <td> \subpage JKQTPlotterDateTimeAxes
    <td> `JKQTPXYLineGraph` and `JKQTPFilledVerticalRangeGraph` <br> C++ vector of data <br> date/time axes <br> plot min/max range graph <br> internal LaTeX parser <br> data from CSV files 
<tr><td> \image html second_axis_small.png
    <td> \subpage JKQTPlotterSecondaryAxes
    <td> plottig with secondary axes, `JKQTBasePlotter::addSecondaryXAxis()`/`JKQTBasePlotter::addSecondaryYAxis()`
<tr><td> \image html advancedlineandfillstyling_small.png
    <td> \subpage JKQTPlotterAdvancedLineAndFillStyling
    <td> `JKQTPXYLineGraph`, `JKQTPSpecialLineHorizontalGraph` and `JKQTPBarVerticalGraph` <br> C++ vector of data <br> advanced line styling and filling
<tr><td> \image html test_styledboxplot_small.png
    <td> \subpage JKQTPlotterBoxplotStyling
    <td> Modifying different Aspects of the Styling of boxplots
<tr><td> \image html test_styling_small.png
    <td> \subpage JKQTPlotterStyling
    <td> Modifying different Aspects of the Styling of JKQTPlotter
</table>



\subsection jkqtp_extut_plotimagedata Examples for Image data Plots

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html rgbimageplot_qt_small.png
    <td> \subpage JKQTPlotterImagePlotQImageRGB
    <td> `JKQTPImage` <br> `QImage` drawn onto a plot with arbitrary scaling  <br> inverted coordinate axes
<tr><td> \image html imageplot_small.png
    <td> \subpage JKQTPlotterImagePlot
    <td> `JKQTPColumnMathImage` <br> image data copied from C-style row-major array into a single column of the internal datastore <br> Describes several options of the image plotting classes (different ways of color coding, what to do with data above/below the limits etc.) 
<tr><td> \image html imageplot_userpal_program_small.png
    <td> \subpage JKQTPlotterImagePlotUserPalette
    <td> `JKQTPColumnMathImage` <br> user-defines palettes <br> palettes from files
<tr><td> \image html imageplot_modifier_small.png
    <td> \subpage JKQTPlotterImagePlotModifier
    <td> `JKQTPColumnMathImage` <br> image data copied from C-style row-major array into a single column of the internal datastore <br> Image is modified by a second image to display two data dimensions at the same time 
<tr><td> \image html imageplot_nodatastore_small.png
    <td> \subpage JKQTPlotterImagePlotNoDatastore
    <td> `JKQTPMathImage` <br> image data in a C-style row-major array, not using internal datastore 
<tr><td> \image html rgbimageplot_small.png
    <td> \subpage JKQTPlotterRGBImagePlot
    <td> `JKQTPColumnRGBMathImage` <br> image data in a C-style row-major array, not using internal datastore <br> RGB/CMY color compositing
<tr><td> \image html imageplot_opencv_small.png
    <td> \subpage JKQTPlotterImagePlotOpenCV
    <td> `JKQTPColumnMathImage` <br> image data copied from OpenCV cv::Mat-structure into a single column of the internal datastore 
<tr><td> \image html rgbimageplot_opencv_small.png
    <td> \subpage JKQTPlotterImagePlotRGBOpenCV
    <td> `JKQTPColumnRGBMathImage` <br> image data copied from OpenCV cv::Mat-structure into three columns of the internal datastore <br> inverted coordinate axes
<tr><td> \image html imageplot_cimg_small.png
    <td> \subpage JKQTPlotterImagePlotCImg
    <td> `JKQTPColumnMathImage` <br> image data copied from CImg datastructure into a single column of the internal datastore 
<tr><td> \image html rgbimageplot_cimg_small.png
    <td> \subpage JKQTPlotterImagePlotRGBCImg
    <td> `JKQTPColumnRGBMathImage` <br> image data copied from CImg datastructure into three columns of the internal datastore <br> inverted coordinate axes
<tr><td> \image html contourplot_small.png
    <td> \subpage JKQTPlotterContourPlot
    <td> `JKQTPColumnContourPlot` <br> image data edited inside JKQTPDatastore 
</table>

 

\subsection jkqtp_extut_guitools  Examples for GUI Tools

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html ui_small.png
    <td> \subpage JKQTPlotterQtCreator
    <td> using Qt Form Designer <br> parsed function plots (`JKQTPXParsedFunctionLineGraph`) 
<tr><td> \image html jkqtplotter_test_user_interaction_small.gif
    <td> \subpage JKQTPlotterUserInteraction
    <td> different possibilities of user-interaction in JKQtPlotter
<tr><td> \image html ui_bind_scrollbar_small.png
    <td> \subpage JKQTPlotterUIScrollbar
    <td> using <a href="https://doc.qt.io/qt-6/qscrollbar.html">QScrollBar</a> together with JKQtPlotter
</table>


\subsection jkqtp_extut_guitoolslayout  Examples for Layout & Styling

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html multiplot_small.png
    <td> \subpage JKQTPlotterMultiPlotLayout
    <td> Combining plots in Qt Layouts <br> linking plot axes <br> copy data from a `std::map` int the datastore <br> print plots/print preview 
<tr><td> \image html test_styling_small.png
    <td> \subpage JKQTPlotterStyling
    <td> Modifying different Aspects of the Styling of JKQTPlotter
<tr><td> \image html imageplot_userpal_program_small.png
    <td> \subpage JKQTPlotterImagePlotUserPalette
    <td> `JKQTPColumnMathImage` <br> user-defines palettes <br> palettes from files
</table>


\subsection jkqtp_extut_datamanagement Examples for Data Management & Statistics

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html datastore_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastore
    <td> Basic Data Management with JKQTPDatastore <br/> Copying data into a JKQTPDatastore <br/> Editing data inside a JKQTPDatastore <br/> Editing Image Data in a JKQTPDatastore
<tr><td> \image html datastore_iterators_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastoreIterators
    <td> Iterator-based Data Management with JKQTPDatastore 
<tr><td> \image html datastore_statistics_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastoreStatistics
    <td> Advanced 1-Dimensional Statistical Computation with JKQTPDatastore<br>using the internal statistics library (see \ref jkqtptools_math_statistics )<br>basic statistics (mean, standard deviation, ...)<br>boxplots<br>histograms<br>kernel density estimates (KDE)
<tr><td> \image html datastore_regression_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastoreRegression
    <td> Advanced 1-Dimensional Statistical Computation with JKQTPDatastore<br>using the internal statistics library<br>Regression Analysis (with the Statistics Library)<br>robust regression (IRLS)<br>weighted regression<br>non-linear regression<br>polynomial fitting
<tr><td> \image html datastore_groupedstat_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastoreStatisticsGroupedStat
    <td> Advanced 1-Dimensional Statistical Computation with JKQTPDatastore<br>grouped statistics<br>error indicators from data<br>boxplots
<tr><td> \image html datastore_statistics_2d_small.png
    <td> \subpage JKQTPlotterBasicJKQTPDatastoreStatistics2D
    <td> Advanced 2-Dimensional Statistical Computation with JKQTPDatastore<br>using the internal statistics library (see \ref jkqtptools_math_statistics )<br>histograms<br>kernel density estimates (KDE)
</table>



\subsection jkqtp_extut_complexexamples More Complex Examples

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html multiplot_small.png
    <td> \subpage JKQTPlotterMultiPlotLayout
    <td> Combining plots in Qt Layouts <br> linking plot axes <br> copy data from a `std::map` int the datastore <br> print plots/print preview 
<tr><td> \image html test_distributionplot_small.png
    <td> \subpage JKQTPlotterDistributionPlot
    <td> Combines several different graphs to draw random values, their distribution and some statistical properties
<tr><td> \image html mandelbrot_small.png
    <td> \subpage JKQTPlotterMandelbrot
    <td> Allows to zoom into the Mandelbrot Set, using the different Zooming methods of JKQTPlotter
</table>

\subsection jkqtp_extut_specialusecasesexamples Examples for special Use-Cases

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html multithreaded_small.png
    <td> \subpage JKQTPlotterMultiThreaded
    <td> multi-threaded plotting using JKQTBasePlotter
</table>

	
\subsection jkqtp_extut_cmake_build Examples for CMake Build System

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html jkqtplotter_cmakelink_small.png
    <td> \subpage JKQTCMakeLinkExample
	<td> explains how to link against JKQTPlotter with CMake
<tr><td> \image html jkqtplotter_cmakelink_small.png
    <td> \subpage JKQTCMakeFetchContentExample
	<td> explains how to link against JKQTPlotter with CMake's FetchCOntent-API
</table>	
	
	
\section jkqtp_extut_jkqtmathtext  Examples for JKQTMathText

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html jkqtmathtext_simpletest_small.png
    <td> \subpage JKQTMathTextSimpleExample 
	<td> JKQTMathText<br>render LaTeX markup (Schrödinger's equation)
<tr><td> \image html jkqtmathtext_render_small.png
    <td> \subpage JKQTMathTextRenderCmdLineTool 
	<td> JKQTMathText<br>command-line utility
<tr><td> \image html jkqtmathtext_testapp_small.png
    <td> \subpage JKQTMathTextTestApp 
	<td> JKQTMathText<br>render LaTeX markup
</table>
	
	
\section jkqtp_extut_jkqtfastplotter DEPRECATED: Examples for JKQTFastPlotter

<table>
<tr><th> Screenshot    <th> Description   <th> Notes  
<tr><td> \image html jkqtfastplotter_test_small.png
    <td> \subpage JKQTFastPlotterTest 
	<td> JKQTFastPlotter
</table>




\section jkqtp_extut_tools  Tool Programs

<table>
<tr><th> Screenshot    <th> Name   <th> Notes/Description  
<tr><td> \image html jkqtmathtext_render_small.png
    <td> \subpage JKQTMathTextRenderCmdLineTool 
	<td> uses JKQTMathText to render LaTeX Markup into an image file and used to render different images for the documentation
<tr><td> \image html jkqtplotter_doc_imagegenerator_small.png
    <td> \subpage JKQTPlotterDocImageRenderCmdLineTool 
	<td> uses JKQTPlotter to render different images for the documentation
</table>
	

*/