Deploying to gh-pages from @ b349f07118 🚀

This commit is contained in:
jkriege2 2024-10-30 21:03:50 +00:00
parent 169fc28d97
commit 905c14f791
1365 changed files with 2218 additions and 2218 deletions

View File

@ -192,7 +192,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_c_make_fetch_content_example.
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -186,7 +186,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_c_make_link_example.html','')
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -292,7 +292,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_fast_plotter_test.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -185,7 +185,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_math_text_render_cmd_line_too
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -173,7 +173,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_math_text_simple_example.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -128,7 +128,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_math_text_test_app.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -176,7 +176,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_p_parametrized_vector_field_g
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -222,7 +222,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_advanced_line_and_fil
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -237,7 +237,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_barcharts.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -212,7 +212,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_barcharts_custom_draw
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -186,7 +186,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_barcharts_error_bars.
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -166,7 +166,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_barcharts_functor_fil
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -170,7 +170,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_barcharts_two_color_f
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -373,7 +373,7 @@ Iterator Interface</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -202,7 +202,7 @@ Special Properties of the JKQTPDatastore-Iterators</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -119,10 +119,10 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_basic_j_k_q_t_p_datas
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md42">Simple Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md43">Robust Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md44">Weighted Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md45">Linearizable Regression Models</a></li>
<li class="level1"><a href="#autotoc_md46">Polynom Fitting</a></li>
<li class="level1"><a href="#autotoc_md47">Screenshot of the full Program</a></li>
<li class="level1"><a href="#autotoc_md45">Weighted Linear Regression</a></li>
<li class="level1"><a href="#autotoc_md47">Linearizable Regression Models</a></li>
<li class="level1"><a href="#autotoc_md52">Polynom Fitting</a></li>
<li class="level1"><a href="#autotoc_md54">Screenshot of the full Program</a></li>
</ul>
</div>
<div class="textblock"><p>This tutorial project (see <code>./examples/datastore_statistics/</code>) explains several advanced functions of <a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a> in combination with the [<a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>] conatined in <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a>.</p>
@ -213,7 +213,7 @@ Robust Linear Regression</h1>
<li>the closer <code>p</code> is to 2, the closer the fit is to the least squares solution (i.e. the normal regression obtained with the L2 norm)</li>
</ul>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_linrobust_p.png" alt="datastore_regression_linrobust_p" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md44"></a>
<h1><a class="anchor" id="autotoc_md45"></a>
Weighted Linear Regression</h1>
<p>Another option to react to measurement errors is to take these into account when calculating the regression. To do so, you can use weighted regression that uses the measurement errors as inverse weights. This algorithm is implemented in the function <code><a class="el" href="group__jkqtptools__math__statistics__regression.html#gab5c23e5d003ffde1fbf9a089ea454659" title="calculate the weighted linear regression coefficients for a given for a given data range firstX / fir...">jkqtpstatLinearWeightedRegression()</a></code>.</p>
<p>First we generate again a set of datapoints (x,y), which scatter randomly around a linear function. In addition we calculate an "error" <code>err</code> for each datapoint: </p><div class="fragment"><div class="line">std::random_device rd; <span class="comment">// random number generators:</span></div>
@ -267,7 +267,7 @@ Weighted Linear Regression</h1>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression_linweight.png" alt="datastore_regression_linweight" class="inline"/></p>
<p>For this plot we also added a call to </p><div class="fragment"><div class="line"><a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga8bfe5be6f07bc5e05b989cbe8d5906f5">jkqtpstatAddLinearRegression</a>(graphE);</div>
</div><!-- fragment --><p> which performs a simple non-weighted regression. The difference between the two resulting linear functions (blue: simple regression, green: weighted regression) demonstrates the influence of the weighting.</p>
<h1><a class="anchor" id="autotoc_md45"></a>
<h1><a class="anchor" id="autotoc_md47"></a>
Linearizable Regression Models</h1>
<p>In addition to the simple linear regression model <code>f(x)=a+b*x</code>, it is also possible to fit a few non-linear models by transforming the data:</p><ul>
<li>power-law function<code>f(x)=a*x^b</code>, which is a linear function in a log(x)-log(y)-plot</li>
@ -341,7 +341,7 @@ Linearizable Regression Models</h1>
<li><code><a class="el" href="group__jkqtptools__math__statistics__regression.html#ga3907535ce3b98a3b0a4898d9eee1443f" title="calculate the robust linear regression coefficients for a given data range firstX / firstY ....">jkqtpstatRobustIRLSRegression()</a></code> / <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga447fe500e98a779bbd5ac634cccc641b" title="calculate the (robust) iteratively reweighted least-squares (IRLS) estimate for the parameters where ...">jkqtpstatAddRobustIRLSRegression()</a></code></li>
<li><code><a class="el" href="group__jkqtptools__math__statistics__regression.html#gaa6abec21468e0c369200d7fc92589531" title="calculate the robust linear regression coefficients for a given data range firstX / firstY ....">jkqtpstatWeightedRegression()</a></code> / <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#gacdcf71efadb7f629a4535dc433af97a5" title="calculate the weighted linear regression coefficients for a given for a given data range firstX / fir...">jkqtpstatAddWeightedRegression()</a></code></li>
</ul>
<h1><a class="anchor" id="autotoc_md46"></a>
<h1><a class="anchor" id="autotoc_md52"></a>
Polynom Fitting</h1>
<p>Finally the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> also supports one option for non-linear model fitting, namely fitting of polynomial models. This is implemented in the function <code><a class="el" href="group__jkqtptools__math__statistics__poly.html#gaccc77ac9938ce987c232f5bee76b753d" title="fits (in a least-squares sense) a polynomial of order P to a set of N data pairs">jkqtpstatPolyFit()</a></code>.</p>
<p>To demonstrate this function we first generate data from a poylnomial model (with gaussian noise):</p>
@ -384,7 +384,7 @@ Polynom Fitting</h1>
<div class="line"> <a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga843050e46d7b53c1ce239751910d13a8">jkqtpstatAddPolyFit</a>(graphP, p);</div>
<div class="line">}</div>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_ga843050e46d7b53c1ce239751910d13a8"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#ga843050e46d7b53c1ce239751910d13a8">jkqtpstatAddPolyFit</a></div><div class="ttdeci">JKQTPXFunctionLineGraph * jkqtpstatAddPolyFit(JKQTBasePlotter *plotter, InputItX firstX, InputItX lastX, InputItY firstY, InputItY lastY, size_t P, OutputItP firstRes)</div><div class="ttdoc">fits (in a least-squares sense) a polynomial of order P to a set of N data pairs from a given data ...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:2248</div></div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md47"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md54"></a>
Screenshot of the full Program</h1>
<p>The output of the full test program <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics/datastore_regression.cpp"><code>datastore_regression.cpp</code></a> looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_regression.png" alt="datastore_regression" class="inline"/> </p>
@ -396,7 +396,7 @@ Screenshot of the full Program</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -117,14 +117,14 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_basic_j_k_q_t_p_datas
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md48">Generating different sets of random numbers</a></li>
<li class="level1"><a href="#autotoc_md49">Basic Statistics</a></li>
<li class="level1"><a href="#autotoc_md50">Boxplots</a><ul><li class="level2"><a href="#autotoc_md51">Standard Boxplots</a></li>
<li class="level2"><a href="#autotoc_md52">Boxplots with Outliers</a></li>
<ul><li class="level1"><a href="#autotoc_md44">Generating different sets of random numbers</a></li>
<li class="level1"><a href="#autotoc_md46">Basic Statistics</a></li>
<li class="level1"><a href="#autotoc_md48">Boxplots</a><ul><li class="level2"><a href="#autotoc_md49">Standard Boxplots</a></li>
<li class="level2"><a href="#autotoc_md50">Boxplots with Outliers</a></li>
</ul>
</li>
<li class="level1"><a href="#autotoc_md53">Histograms</a></li>
<li class="level1"><a href="#autotoc_md54">Kernel Density Estimates (KDE)</a></li>
<li class="level1"><a href="#autotoc_md51">Histograms</a></li>
<li class="level1"><a href="#autotoc_md53">Kernel Density Estimates (KDE)</a></li>
<li class="level1"><a href="#autotoc_md55">Cummulative Histograms and KDEs</a></li>
<li class="level1"><a href="#autotoc_md56">Screenshot of the full Program</a></li>
</ul>
@ -139,7 +139,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_basic_j_k_q_t_p_datas
<li><a class="el" href="_j_k_q_t_plotter_basic_j_k_q_t_p_datastore_statistics2_d.html">Advanced 2-Dimensional Statistics with JKQTPDatastore</a></li>
</ul>
<p>The source code of the main application can be found in <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics/datastore_statistics.cpp"><code>datastore_statistics.cpp</code></a>. This tutorial cites only parts of this code to demonstrate different ways of working with data for the graphs.</p>
<h1><a class="anchor" id="autotoc_md48"></a>
<h1><a class="anchor" id="autotoc_md44"></a>
Generating different sets of random numbers</h1>
<p>The code segments below will fill four instances of <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a> with different statistical plots. All these plots are based on three sets of random numbers generated as shown here: </p><div class="fragment"><div class="line"><span class="keywordtype">size_t</span> randomdatacol1=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data 1&quot;</span>);</div>
<div class="line"><span class="keywordtype">size_t</span> randomdatacol2=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data 2&quot;</span>);</div>
@ -159,7 +159,7 @@ Generating different sets of random numbers</h1>
<div class="line"> <span class="keywordflow">else</span> datastore1-&gt;appendToColumn(randomdatacol3, v);</div>
<div class="line">}</div>
</div><!-- fragment --><p>The column <code>randomdatacol1</code> will contain 150 random numbers. Each one is drawn either from a normal dirstribution N(0,1) (<code>d1</code>) or N(6,1.2) (<code>d2</code>). the decision, which of the two to use is based on the result of a third random distribution ddecide, which only returns 0 or 1. The two columns <code>randomdatacol2</code> and <code>randomdatacol3</code> only collect the random numbers drawn from <code>d1</code> or <code>d2</code> respectively. The three columns are generated empyt by calling <code><a class="el" href="class_j_k_q_t_p_datastore.html#ae057eda96c7b754cd42f4380b429a589" title="add a new column to the datastore and return its ID">JKQTPDatastore::addColumn()</a></code> with only a name. Then the actual values are added by calling <code><a class="el" href="class_j_k_q_t_p_datastore.html#a3a992ac63957ce0c521e48944f704d91" title="adds a value value to the column column. This changes the column length (number of rows).">JKQTPDatastore::appendToColumn()</a></code>.</p>
<h1><a class="anchor" id="autotoc_md49"></a>
<h1><a class="anchor" id="autotoc_md46"></a>
Basic Statistics</h1>
<p>The three sets of random numbers from above can be visualized e.g. by a <code><a class="el" href="class_j_k_q_t_p_peak_stream_graph.html" title="interprets data as a stream of x- or y-positions (depending in yPeaks ) ans plots a line on the heig...">JKQTPPeakStreamGraph</a></code> graph with code as follows: </p><div class="fragment"><div class="line"><a class="code hl_class" href="class_j_k_q_t_p_peak_stream_graph.html">JKQTPPeakStreamGraph</a>* gData1;</div>
<div class="line">plot1box-&gt;addGraph(gData1=<span class="keyword">new</span> <a class="code hl_class" href="class_j_k_q_t_p_peak_stream_graph.html">JKQTPPeakStreamGraph</a>(plot1box));</div>
@ -199,9 +199,9 @@ Basic Statistics</h1>
<li>5-Number Summary (e.g. for boxplots): <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#ga3a94379010a5de3e9701122f88bfb6f4" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatistics()</a></code>, <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#gaac8934aa1adf6cc3e90a74002dcd5576" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatisticsAndOutliers()</a></code>, <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#ga8097151787e2f08b59d61a89e9ca3ba6" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatisticsOfSortedVector()</a></code>, <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#ga71146e45f6cca4eefb5748fcd0e72751" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatisticsAndOutliersOfSortedVector()</a></code></li>
</ul>
<p>All these functions use all values in the given range and convert each value to a <code>double</code>, using <code><a class="el" href="group__jkqtptools__math__basic.html#ga966c1a713f60bd026db4f35f7007eb7e" title="converts a boolean to a double, is used to convert boolean to double by JKQTPDatastore">jkqtp_todouble()</a></code>. The return values is always a dohble. Therefore you can use these functions to calculate statistics of ranges of any type that can be converted to <code>double</code>. Values that do not result in a valid <code>double</code>are not used in calculating the statistics. Therefore you can exclude values by setting them <code>JKQTP_DOUBLE_NAN</code> (i.e. "not a number").</p>
<h1><a class="anchor" id="autotoc_md50"></a>
<h1><a class="anchor" id="autotoc_md48"></a>
Boxplots</h1>
<h2><a class="anchor" id="autotoc_md51"></a>
<h2><a class="anchor" id="autotoc_md49"></a>
Standard Boxplots</h2>
<p>As mentioned above and shown in several other examples, <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a> supports <a href="https://en.wikipedia.org/wiki/Box_plot">Boxplots</a> with the classes <code><a class="el" href="class_j_k_q_t_p_boxplot_horizontal_element.html" title="This implements a horizontal (notched) boxplot where the data is directly given to the object and not...">JKQTPBoxplotHorizontalElement</a></code>, <code><a class="el" href="class_j_k_q_t_p_boxplot_vertical_element.html" title="This implements a single vertical (notched) boxplot as a &quot;geometric element&quot;, where the data is direc...">JKQTPBoxplotVerticalElement</a></code>, as well as <code>JKQTPBoxplotHorizontal</code> and <code>JKQTPBoxplotVertical</code>. You can then use the 5-Number Summray functions from the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> to calculate the data for such a boxplot (e.g. <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#ga3a94379010a5de3e9701122f88bfb6f4" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatistics()</a></code>) and set it up by hand. Code would look roughly like this: </p><div class="fragment"><div class="line"><a class="code hl_struct" href="struct_j_k_q_t_p_stat5_number_statistics.html">JKQTPStat5NumberStatistics</a> stat=<a class="code hl_function" href="group__jkqtptools__math__statistics__basic.html#ga3a94379010a5de3e9701122f88bfb6f4">jkqtpstat5NumberStatistics</a>(data.begin(), data.end(), 0.25, .5);</div>
<div class="line"><a class="code hl_class" href="class_j_k_q_t_p_boxplot_vertical_element.html">JKQTPBoxplotVerticalElement</a>* res=<span class="keyword">new</span> <a class="code hl_class" href="class_j_k_q_t_p_boxplot_vertical_element.html">JKQTPBoxplotVerticalElement</a>(plotter);</div>
@ -251,7 +251,7 @@ Standard Boxplots</h2>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_gadc49e9815cacace42d56389d63f0228b"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#gadc49e9815cacace42d56389d63f0228b">jkqtpstatAddHBoxplot</a></div><div class="ttdeci">JKQTPBoxplotHorizontalElement * jkqtpstatAddHBoxplot(JKQTBasePlotter *plotter, InputIt first, InputIt last, double boxposY, double quantile1Spec=0.25, double quantile2Spec=0.75, double minimumQuantile=0, double maximumQuantile=1.0, JKQTPStat5NumberStatistics *statOutput=nullptr)</div><div class="ttdoc">add a JKQTPBoxplotHorizontalElement to the given plotter, where the boxplot values are calculated fro...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:67</div></div>
</div><!-- fragment --><p>Here <code>-0.25</code>indicates the location (on the y-axis) of the boxplot. and the plot is calculated for the data in the <code><a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a></code> column <code>randomdatacol2</code>.</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_boxplots_simple.png" alt="datastore_statistics_boxplots_simple" class="inline"/></p>
<h2><a class="anchor" id="autotoc_md52"></a>
<h2><a class="anchor" id="autotoc_md50"></a>
Boxplots with Outliers</h2>
<p>Usually the boxplot draws its whiskers at the minimum and maximum value of the dataset. But if your data contains a lot of outliers, it may make sense to draw them e.g. at the 3% and 97% quantiles and the draw the outliers as additional data points. This can also be done with <code><a class="el" href="group__jkqtptools__math__statistics__basic.html#ga3a94379010a5de3e9701122f88bfb6f4" title="calculates the Five-Number Statistical Summary (minimum, median, maximum and two user-defined quantil...">jkqtpstat5NumberStatistics()</a></code>, as you can specify the minimum and maximum quantile (default is 0 and 1, i.e. the true minimum and maximum) and the resulting object contains a vector with the outlier values. Then you could add them to the <a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a> and add a scatter plot that displays them. Also this task is sped up by an "adaptor". Simply call</p>
<div class="fragment"><div class="line">std::pair&lt;JKQTPBoxplotHorizontalElement*,JKQTPSingleColumnSymbolsGraph*&gt; gBox1;</div>
@ -262,7 +262,7 @@ Boxplots with Outliers</h2>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_gab0ff0614e1796afe34c3cae0dc9ba8a3"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#gab0ff0614e1796afe34c3cae0dc9ba8a3">jkqtpstatAddHBoxplotAndOutliers</a></div><div class="ttdeci">std::pair&lt; JKQTPBoxplotHorizontalElement *, JKQTPSingleColumnSymbolsGraph * &gt; jkqtpstatAddHBoxplotAndOutliers(JKQTBasePlotter *plotter, InputIt first, InputIt last, double boxposY, double quantile1Spec=0.25, double quantile2Spec=0.75, double minimumQuantile=0.03, double maximumQuantile=0.97, const QString &amp;outliercolumnBaseName=QString(&quot;boxplot&quot;), JKQTPStat5NumberStatistics *statOutput=nullptr)</div><div class="ttdoc">add a JKQTPBoxplotHorizontalElement and a JKQTPSingleColumnSymbolsGraph for outliers to the given plo...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:164</div></div>
</div><!-- fragment --><p>As you can see this restuns the <code><a class="el" href="class_j_k_q_t_p_boxplot_horizontal_element.html" title="This implements a horizontal (notched) boxplot where the data is directly given to the object and not...">JKQTPBoxplotHorizontalElement</a></code> and in addition a <code><a class="el" href="class_j_k_q_t_p_single_column_symbols_graph.html" title="plots a 1-column set of data-values with symbols onto a JKQtPlotter/JKQtBasePlotter....">JKQTPSingleColumnSymbolsGraph</a></code> for the display of the outliers. The result looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_boxplots_outliers.png" alt="datastore_statistics_boxplots_outliers" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md53"></a>
<h1><a class="anchor" id="autotoc_md51"></a>
Histograms</h1>
<p>Calculating 1D-Histograms is supported by several functions from the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>, e.g. <code><a class="el" href="group__jkqtptools__math__statistics__1dhist.html#gaa83dbe625d4507f55629eaaf96a09cf8" title="calculate an autoranged 1-dimensional histogram from the given data range first .....">jkqtpstatHistogram1DAutoranged()</a></code>. You can use the result to fill new columns in a <code><a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a></code>, which can then be used to draw the histogram (here wit 15 bins, spanning the full data range):</p>
<div class="fragment"><div class="line"><span class="keywordtype">size_t</span> histcolX=plotter-&gt;getDatastore()-&gt;addColumn(histogramcolumnBaseName+<span class="stringliteral">&quot;, bins&quot;</span>);</div>
@ -283,7 +283,7 @@ Histograms</h1>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_ga8ff37e2bd7bd79311cca2c5cc3b65345"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#ga8ff37e2bd7bd79311cca2c5cc3b65345">jkqtpstatAddHHistogram1DAutoranged</a></div><div class="ttdeci">JKQTPBarVerticalGraph * jkqtpstatAddHHistogram1DAutoranged(JKQTBasePlotter *plotter, InputIt first, InputIt last, int bins=11, bool normalized=true, bool cummulative=false, const QString &amp;histogramcolumnBaseName=QString(&quot;histogram&quot;))</div><div class="ttdoc">calculate an autoranged histogram and add a JKQTPBarVerticalGraph to the given plotter,...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:828</div></div>
</div><!-- fragment --><p>The resulting plot looks like this (the distributions used to generate the random data are also shown as line plots!):</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_hist.png" alt="datastore_statistics_hist" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md54"></a>
<h1><a class="anchor" id="autotoc_md53"></a>
Kernel Density Estimates (KDE)</h1>
<p>Especially when only few samples from a distribution are available, histograms are not good at representing the underlying data distribution. In such cases, <a href="https://en.wikipedia.org/wiki/Kernel_density_estimation">Kernel Density Estimates (KDE)</a> can help, which are basically a smoothed variant of a histogram. The <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> supports calculating them via e.g. <code><a class="el" href="group__jkqtptools__math__statistics__1dkde.html#gaea1ca0066c61947e8a8a7d8deaa36d3e" title="calculate an autoranged 1-dimensional Kernel Density Estimation (KDE) from the given data range first...">jkqtpstatKDE1D()</a></code>:</p>
<div class="fragment"><div class="line"><span class="keywordtype">size_t</span> kdecolX=plotter-&gt;getDatastore()-&gt;addColumn(KDEcolumnBaseName+<span class="stringliteral">&quot;, bins&quot;</span>);</div>
@ -343,7 +343,7 @@ Screenshot of the full Program</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -117,11 +117,11 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_basic_j_k_q_t_p_datas
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md57">Generating different sets of random numbers</a></li>
<li class="level1"><a href="#autotoc_md58">Marginal Statistics</a></li>
<li class="level1"><a href="#autotoc_md59">2D Histogram</a></li>
<li class="level1"><a href="#autotoc_md60">Kernel Density Estimates (KDE)</a></li>
<li class="level1"><a href="#autotoc_md61">Screenshot of the full Program</a></li>
<ul><li class="level1"><a href="#autotoc_md59">Generating different sets of random numbers</a></li>
<li class="level1"><a href="#autotoc_md60">Marginal Statistics</a></li>
<li class="level1"><a href="#autotoc_md61">2D Histogram</a></li>
<li class="level1"><a href="#autotoc_md62">Kernel Density Estimates (KDE)</a></li>
<li class="level1"><a href="#autotoc_md63">Screenshot of the full Program</a></li>
</ul>
</div>
<div class="textblock"><p>This tutorial project (see <code>./examples/datastore_statistics_2d/</code>) explains several advanced functions of <a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a> in combination with the [<a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>] conatined in <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a>.</p>
@ -134,7 +134,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_basic_j_k_q_t_p_datas
<li><a class="el" href="_j_k_q_t_plotter_basic_j_k_q_t_p_datastore_statistics2_d.html">Advanced 2-Dimensional Statistics with JKQTPDatastore</a></li>
</ul>
<p>The source code of the main application can be found in <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics_2d/datastore_statistics_2d.cpp"><code>datastore_statistics_2d.cpp</code></a>. This tutorial cites only parts of this code to demonstrate different ways of working with data for the graphs.</p>
<h1><a class="anchor" id="autotoc_md57"></a>
<h1><a class="anchor" id="autotoc_md59"></a>
Generating different sets of random numbers</h1>
<p>The code segments below will fill different instances of <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a> with different statistical plots. All these plots are based on either of two sets of random number pairs (i.e. x/y-locations) generated as shown here: </p><div class="fragment"><div class="line"><span class="keywordtype">size_t</span> randomdatacolx_small=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data, x&quot;</span>);</div>
<div class="line"><span class="keywordtype">size_t</span> randomdatacoly_small=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data, y&quot;</span>);</div>
@ -203,7 +203,7 @@ Generating different sets of random numbers</h1>
<div class="ttc" id="aclass_j_k_q_t_p_geo_ellipse_html"><div class="ttname"><a href="class_j_k_q_t_p_geo_ellipse.html">JKQTPGeoEllipse</a></div><div class="ttdoc">This JKQTPGeometricPlotElement is used to draw an ellipse.</div><div class="ttdef"><b>Definition</b> jkqtpgeoshapes.h:300</div></div>
</div><!-- fragment --><p>The resulting plot looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_2d_scatteronly.png" alt="datastore_statistics_2d_scatteronly" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md58"></a>
<h1><a class="anchor" id="autotoc_md60"></a>
Marginal Statistics</h1>
<p>To explore the statistical properties of a 2D dataset, it is often useful to draw the marginal histograms, i.e. the histograms of one of the two variables. To do so, we use the function <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga8ff37e2bd7bd79311cca2c5cc3b65345" title="calculate an autoranged histogram and add a JKQTPBarVerticalGraph to the given plotter,...">jkqtpstatAddHHistogram1DAutoranged()</a></code> and <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga4797755e8ed88b52e524f38e49fd396e" title="calculate an autoranged histogram and add a JKQTPBarHorizontalGraph to the given plotter,...">jkqtpstatAddVHistogram1DAutoranged()</a></code> that were introduced in <a class="el" href="_j_k_q_t_plotter_basic_j_k_q_t_p_datastore_statistics.html">Advanced 1-Dimensional Statistics with JKQTPDatastore</a> and are explained in detail there:</p>
<div class="fragment"><div class="line"><a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga8ff37e2bd7bd79311cca2c5cc3b65345">jkqtpstatAddHHistogram1DAutoranged</a>(plothistBottom-&gt;getPlotter(), datastore1-&gt;begin(randomdatacolx), datastore1-&gt;end(randomdatacolx), 1.0, <span class="keyword">true</span>);</div>
@ -270,7 +270,7 @@ Marginal Statistics</h1>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_ga4d6431fd319ea8517ee85b99fb6437cb"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#ga4d6431fd319ea8517ee85b99fb6437cb">jkqtpstatAddVKDE1DAutoranged</a></div><div class="ttdeci">JKQTPXYLineGraph * jkqtpstatAddVKDE1DAutoranged(JKQTBasePlotter *plotter, InputIt first, InputIt last, int Nout=100, const std::function&lt; double(double)&gt; &amp;kernel=std::function&lt; double(double)&gt;(&amp;jkqtpstatKernel1DGaussian), double bandwidth=1.0, bool cummulative=false, const QString &amp;KDEcolumnBaseName=QString(&quot;KDE&quot;))</div><div class="ttdoc">calculate an autoranged vertical KDE and add a JKQTPXYLineGraph to the given plotter,...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:1457</div></div>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_gaab1d97b4953dbe7ed0f78d2b29d8f341"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#gaab1d97b4953dbe7ed0f78d2b29d8f341">jkqtpstatAddHKDE1DAutoranged</a></div><div class="ttdeci">JKQTPXYLineGraph * jkqtpstatAddHKDE1DAutoranged(JKQTBasePlotter *plotter, InputIt first, InputIt last, int Nout=100, const std::function&lt; double(double)&gt; &amp;kernel=std::function&lt; double(double)&gt;(&amp;jkqtpstatKernel1DGaussian), double bandwidth=1.0, bool cummulative=false, const QString &amp;KDEcolumnBaseName=QString(&quot;KDE&quot;))</div><div class="ttdoc">calculate an autoranged KDE and add a JKQTPXYLineGraph to the given plotter, where the KDE is calcula...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:1279</div></div>
</div><!-- fragment --><p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_2d_marginkde.png" alt="datastore_statistics_2d_marginkde" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md59"></a>
<h1><a class="anchor" id="autotoc_md61"></a>
2D Histogram</h1>
<p>Calculating 2D-Histograms is implemented in <code><a class="el" href="group__jkqtptools__math__statistics__2dhist.html#gad8ab0d1e867375485e2c64743e12ab44" title="calculate a 2-dimensional histogram from the given data range firstX / firstY ... lastY / lastY">jkqtpstatHistogram2D()</a></code> from the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>. This functions calculates a histogram on a given grid with the first bin at <code>xmin,ymin</code> and the last bin at <code>xmax,ymax</code>, containing <code>Nx,Ny</code> bins in x-/y-direction. You can use the result to fill new image column (with <code>Nx</code> columns and <code>Ny</code> rows) in a <code><a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a></code>, which can then be used to draw the histogram.</p>
<p>First we have to determine the x- and y-range of data and calculate the number of bins from these:</p>
@ -313,7 +313,7 @@ Marginal Statistics</h1>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_gac73ef98710f4a642e534daf4d9e18709"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#gac73ef98710f4a642e534daf4d9e18709">jkqtpstatAddHistogram2DContour</a></div><div class="ttdeci">JKQTPColumnContourPlot * jkqtpstatAddHistogram2DContour(JKQTBasePlotter *plotter, InputItX firstX, InputItX lastX, InputItY firstY, InputItY lastY, size_t xbins=10, size_t ybins=10, bool normalized=true, const QString &amp;histogramcolumnBaseName=QString(&quot;histogram&quot;), double *oxmin=nullptr, double *oxmax=nullptr, double *oymin=nullptr, double *oymax=nullptr)</div><div class="ttdoc">calculate calculate a 2-dimensional histogram and add a JKQTPColumnContourPlot to the given plotter,...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:1114</div></div>
</div><!-- fragment --><p>These differ in the type of plot that is added <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga0903341fc5a3e297a9f6c547df4b222f" title="calculate calculate a 2-dimensional histogram and add a JKQTPColumnMathImage to the given plotter,...">jkqtpstatAddHistogram2DImage()</a></code> adds an image graph (<code><a class="el" href="class_j_k_q_t_p_column_math_image.html" title="class to plot an image from an 2-dimensional array of values stored in a column of the datastore">JKQTPColumnMathImage</a></code>) and <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#gac73ef98710f4a642e534daf4d9e18709" title="calculate calculate a 2-dimensional histogram and add a JKQTPColumnContourPlot to the given plotter,...">jkqtpstatAddHistogram2DContour()</a></code> adds a contour plot (<code><a class="el" href="class_j_k_q_t_p_column_contour_plot.html" title="class for a contour plots (same as JKQTPContourPlot) of images stored in a JKQTPDatastore column">JKQTPColumnContourPlot</a></code>). A contour plot may look like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_2d_histcontour.png" alt="datastore_statistics_2d_histcontour" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md60"></a>
<h1><a class="anchor" id="autotoc_md62"></a>
Kernel Density Estimates (KDE)</h1>
<p>Especially when only few samples from a distribution are available, histograms are not good at representing the underlying data distribution. In such cases, <a href="https://en.wikipedia.org/wiki/Multivariate_kernel_density_estimation">Kernel Density Estimates (KDE)</a> can help, which are basically a smoothed variant of a histogram. The <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a> supports calculating them via e.g. <code><a class="el" href="group__jkqtptools__math__statistics__2dkde.html#gabea5faa220697a680179e0460ab6a46d" title="calculate an autoranged 2-dimensional Kernel Density Estimation (KDE) from the given data range first...">jkqtpstatKDE2D()</a></code>:</p>
<p>This functions calculates a histogram on a given grid with the first bin at <code>xmin,ymin</code> and the last bin at <code>xmax,ymax</code>, containing <code>Nx,Ny</code> bins in x-/y-direction. You can use the result to fill new image column (with <code>Nx</code> columns and <code>Ny</code> rows) in a <code><a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a></code>, which can then be used to draw the histogram.</p>
@ -352,7 +352,7 @@ Kernel Density Estimates (KDE)</h1>
<div class="ttc" id="agroup__jkqtptools__math__statistics__adaptors_html_ga7921c9edeb90d7eba8a36076528db331"><div class="ttname"><a href="group__jkqtptools__math__statistics__adaptors.html#ga7921c9edeb90d7eba8a36076528db331">jkqtpstatAddKDE2DContour</a></div><div class="ttdeci">JKQTPColumnContourPlot * jkqtpstatAddKDE2DContour(JKQTBasePlotter *plotter, InputItX firstX, InputItX lastX, InputItY firstY, InputItY lastY, size_t xbins=10, size_t ybins=10, const std::function&lt; double(double, double)&gt; &amp;kernel=std::function&lt; double(double, double)&gt;(&amp;jkqtpstatKernel2DGaussian), double bandwidthX=1.0, double bandwidthY=1.0, const QString &amp;kdecolumnBaseName=QString(&quot;histogram&quot;), double *oxmin=nullptr, double *oxmax=nullptr, double *oymin=nullptr, double *oymax=nullptr)</div><div class="ttdoc">calculate calculate a 2-dimensional kernel density estimate (KDE) and add a JKQTPColumnContourPlot to...</div><div class="ttdef"><b>Definition</b> jkqtpstatisticsadaptors.h:1697</div></div>
</div><!-- fragment --><p>These differ in the type of plot that is added <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga2169e4129730d013f94ad81ccf47209b" title="calculate calculate a 2-dimensional kernel density estimate (KDE) and add a JKQTPColumnMathImage to t...">jkqtpstatAddKDE2DImage()</a></code> adds an image graph (<code><a class="el" href="class_j_k_q_t_p_column_math_image.html" title="class to plot an image from an 2-dimensional array of values stored in a column of the datastore">JKQTPColumnMathImage</a></code>) and <code><a class="el" href="group__jkqtptools__math__statistics__adaptors.html#ga7921c9edeb90d7eba8a36076528db331" title="calculate calculate a 2-dimensional kernel density estimate (KDE) and add a JKQTPColumnContourPlot to...">jkqtpstatAddKDE2DContour()</a></code> adds a contour plot (<code><a class="el" href="class_j_k_q_t_p_column_contour_plot.html" title="class for a contour plots (same as JKQTPContourPlot) of images stored in a JKQTPDatastore column">JKQTPColumnContourPlot</a></code>). the first is shown in the screenshot above, the latter looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_2d_kdecontour.png" alt="datastore_statistics_2d_kdecontour" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md61"></a>
<h1><a class="anchor" id="autotoc_md63"></a>
Screenshot of the full Program</h1>
<p>The output of the full test program <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/datastore_statistics_2d/datastore_statistics_2d.cpp"><code>datastore_statistics_2d.cpp</code></a> looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/datastore_statistics_2d.png" alt="datastore_statistics_2d" class="inline"/> </p>
@ -364,7 +364,7 @@ Screenshot of the full Program</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -343,7 +343,7 @@ Screenshot of the full Program</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -240,7 +240,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_boxplot_styling.html'
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -215,7 +215,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_boxplots_graphs.html'
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -250,7 +250,7 @@ Gimmick: Animating a Contour Plot</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -117,11 +117,11 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_date_time_axes.html',
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md62">Date Axis</a></li>
<li class="level1"><a href="#autotoc_md63">Time Axis</a></li>
<ul><li class="level1"><a href="#autotoc_md57">Date Axis</a></li>
<li class="level1"><a href="#autotoc_md58">Time Axis</a></li>
</ul>
</div>
<div class="textblock"><h1><a class="anchor" id="autotoc_md62"></a>
<div class="textblock"><h1><a class="anchor" id="autotoc_md57"></a>
Date Axis</h1>
<p>This project (see <code>./examples/dateaxes/</code>) simply creates a <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a> widget (as a new window) with the X-axis showing time or date(-time) values, formated as such.</p>
<p>The source code of the main application can be found in <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/dateaxes/dateaxes.cpp"><code>dateaxes.cpp</code></a>.</p>
@ -219,7 +219,7 @@ Date Axis</h1>
<div class="ttc" id="agroup__jkqtpplottersupprt_html_ggad58b8a9812defae065b13b76154c8d2eae74a5730d5380cdaa3a436b199af2f3c"><div class="ttname"><a href="group__jkqtpplottersupprt.html#ggad58b8a9812defae065b13b76154c8d2eae74a5730d5380cdaa3a436b199af2f3c">JKQTPCALTdatetime</a></div><div class="ttdeci">@ JKQTPCALTdatetime</div><div class="ttdoc">show numbers as times</div><div class="ttdef"><b>Definition</b> jkqtptools.h:457</div></div>
</div><!-- fragment --><p>The result looks like this:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/dateaxes.png" alt="symbols_and_styles" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md63"></a>
<h1><a class="anchor" id="autotoc_md58"></a>
Time Axis</h1>
<p>A second variant (see the example CPP-file) displays data with a time-axis:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/dateaxes_timeaxis.png" alt="symbols_and_styles" class="inline"/></p>
@ -269,7 +269,7 @@ Time Axis</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -300,7 +300,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_distribution_plot.htm
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_doc_image_render_cmd_
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -251,7 +251,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_error_bar_styles.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -186,7 +186,7 @@ Notes</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -175,7 +175,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_filled_graphs.html','
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -203,7 +203,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_filled_graphs_error_b
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -251,7 +251,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_financial_chart_examp
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -220,7 +220,7 @@ Notes</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -187,7 +187,7 @@ Screenshot</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -157,7 +157,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_geometric_bezier.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -145,7 +145,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_geometric_coordinate_
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -284,7 +284,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_geometric_graphs.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -126,7 +126,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_geometric_graphs_simp
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -197,7 +197,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_graph_labels_example.
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -282,7 +282,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -263,7 +263,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_c_img.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -278,7 +278,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_modifier.h
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -247,7 +247,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_no_datasto
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -265,7 +265,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_open_c_v.h
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -158,7 +158,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_q_image_r_
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -250,7 +250,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_r_g_b_c_im
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -249,7 +249,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_image_plot_r_g_b_open
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -331,7 +331,7 @@ Main Program of the Example (GUI)</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -171,7 +171,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_impulse_plots.html','
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -215,7 +215,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_log_axes.html',''); i
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -285,7 +285,7 @@ How it works</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -217,7 +217,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_multi_plot_layout.htm
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -239,7 +239,7 @@ batch runs = 3<br />
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -256,7 +256,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_param_scatter.html','
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -206,7 +206,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_param_scatter_image.h
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -175,7 +175,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_parametric_curves.htm
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -180,7 +180,7 @@ Properties of the Adaptive Plotting Algorithm</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -199,7 +199,7 @@ Form Class &lt;tt&gt;FormWithJKQTPlotter&lt;/tt&gt;</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -270,7 +270,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_r_g_b_image_plot.html
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -236,7 +236,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_secondary_axes.html',
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -187,7 +187,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_simple_test.html','')
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_special_step_line_plo
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -214,7 +214,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_speed_test.html','');
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -243,7 +243,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_stacked_bar_chart.htm
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -217,7 +217,7 @@ Some Example Styles</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -179,7 +179,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_symbols_and_styles.ht
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -212,7 +212,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_symbols_errors.html',
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -207,7 +207,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_u_i_scrollbar.html','
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -275,7 +275,7 @@ Special Context Menu</h3>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -178,7 +178,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_vector_field_example.
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -117,16 +117,16 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_violinplot_graphs.htm
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#autotoc_md116">Generating a test Dataset</a></li>
<li class="level1"><a href="#autotoc_md117">Visualizing data as a Rug Plot</a></li>
<li class="level1"><a href="#autotoc_md118">Drawing the (vertical) Violin Plot</a></li>
<li class="level1"><a href="#autotoc_md119">Drawing a horizontal Violin Plot</a></li>
<li class="level1"><a href="#autotoc_md120">Adapters as shortcuts to drawing Violin Plots</a></li>
<ul><li class="level1"><a href="#autotoc_md118">Generating a test Dataset</a></li>
<li class="level1"><a href="#autotoc_md119">Visualizing data as a Rug Plot</a></li>
<li class="level1"><a href="#autotoc_md120">Drawing the (vertical) Violin Plot</a></li>
<li class="level1"><a href="#autotoc_md121">Drawing a horizontal Violin Plot</a></li>
<li class="level1"><a href="#autotoc_md122">Adapters as shortcuts to drawing Violin Plots</a></li>
</ul>
</div>
<div class="textblock"><p>This project (see <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/violinplot"><code>violinplot</code></a> demonstrates how to use <a class="el" href="class_j_k_q_t_plotter.html" title="plotter widget for scientific plots (uses JKQTBasePlotter to do the actual drawing)">JKQTPlotter</a> to draw <a href="https://en.wikipedia.org/wiki/Violin_plot">violin plots</a> using the classes <code><a class="el" href="class_j_k_q_t_p_violinplot_vertical_element.html" title="This implements a single vertical Violin Plot as a &quot;geometric element&quot;.">JKQTPViolinplotVerticalElement</a></code> and <code><a class="el" href="class_j_k_q_t_p_violinplot_horizontal_element.html" title="This implements a single horizontal Violin Plot as a &quot;geometric element&quot;.">JKQTPViolinplotHorizontalElement</a></code>. Violin plots can be thought of as an extension to box plots, as they are also used to represent the distribution of a random variable, but contain more info than the "simple" 5-number statistics used for boxplots: Violin Plots show an estimate of the desnsity distribution of the random vriable, e.g. calculated as a kernel density estimate, or as a simple histogram. The Plotting classes themselves do not calculate these estimates, but only draw them into the plot. The density estimates are calculated by functions from the <a class="el" href="group__jkqtptools__math__statistics.html">JKQTPlotter Statistics Library</a>.</p>
<p>The source code of the main application is (see <a href="violinplot.cpp"><code>violinplot.cpp</code></a>.</p>
<h1><a class="anchor" id="autotoc_md116"></a>
<h1><a class="anchor" id="autotoc_md118"></a>
Generating a test Dataset</h1>
<p>First we generate some random numbers from a bimodal distribution (and as a by-product also from two single-distributions that form the bimodal): </p><div class="fragment"><div class="line"><span class="keywordtype">size_t</span> randomdatacol1=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data N(1,1)+N(6,2)&quot;</span>);</div>
<div class="line"><span class="keywordtype">size_t</span> randomdatacol2=datastore1-&gt;addColumn(<span class="stringliteral">&quot;random data N(1,1)&quot;</span>);</div>
@ -147,7 +147,7 @@ Generating a test Dataset</h1>
<div class="line"> }</div>
<div class="line"> datastore1-&gt;appendToColumn(randomdatacol1, v);</div>
<div class="line">}</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md117"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md119"></a>
Visualizing data as a Rug Plot</h1>
<p>Samples from the bimodal (built from two gaussian distributions <code>d1</code> and <code>d2</code>) are collected in <code>randomdatacol1</code>, whereas <code>randomdatacol2</code> and <code>randomdatacol3</code> collect those numbers that were drawn from <code>d1</code> or <code>d2</code> respectively.</p>
<p>Such data can be visualized by <code><a class="el" href="class_j_k_q_t_p_single_column_symbols_graph.html" title="plots a 1-column set of data-values with symbols onto a JKQtPlotter/JKQtBasePlotter....">JKQTPSingleColumnSymbolsGraph</a></code>, here using a rug plot (using <code>gData1-&gt;setPositionScatterStyle(JKQTPSingleColumnSymbolsGraph::RugPlot);</code> ... but also e.g. a ee swarm plot would be possible):</p>
@ -164,7 +164,7 @@ Visualizing data as a Rug Plot</h1>
<div class="ttc" id="aclass_j_k_q_t_p_single_column_symbols_graph_html_a3631b52ee32dceb1418183aefe7f7ce4a60c61271a6e7cdee0c8c8f78e4e55a17"><div class="ttname"><a href="class_j_k_q_t_p_single_column_symbols_graph.html#a3631b52ee32dceb1418183aefe7f7ce4a60c61271a6e7cdee0c8c8f78e4e55a17">JKQTPSingleColumnSymbolsGraph::RugPlot</a></div><div class="ttdeci">@ RugPlot</div><div class="ttdoc">like NoScatter but draws each data-point as a horzintal/vertical line, centered around position,...</div><div class="ttdef"><b>Definition</b> jkqtpsinglecolumnsymbols.h:59</div></div>
<div class="ttc" id="aclass_j_k_q_t_p_single_column_symbols_graph_html_a70158ca6e9b890d427438f2314b10e09"><div class="ttname"><a href="class_j_k_q_t_p_single_column_symbols_graph.html#a70158ca6e9b890d427438f2314b10e09">JKQTPSingleColumnSymbolsGraph::setPosition</a></div><div class="ttdeci">void setPosition(double __value)</div><div class="ttdoc">missing coordinate, i.e. if the data from dataColumn is interpreted as x-values, this is the y-positi...</div></div>
<div class="ttc" id="aclass_j_k_q_t_p_single_column_symbols_graph_html_a8fc0864e7e4008ec1797b3dc81d0f375"><div class="ttname"><a href="class_j_k_q_t_p_single_column_symbols_graph.html#a8fc0864e7e4008ec1797b3dc81d0f375">JKQTPSingleColumnSymbolsGraph::setPositionScatterStyle</a></div><div class="ttdeci">void setPositionScatterStyle(ScatterStyle __value)</div><div class="ttdoc">how to distribute the datapoints from dataColumn at the location position</div></div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md118"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md120"></a>
Drawing the (vertical) Violin Plot</h1>
<p>Now we need to calculate the kernel density estimate from the data in <code>randomdatacol1</code> and store the result in two new columns <code>cViol1Cat</code> and <code>cViol1Freq</code>:</p>
<div class="fragment"><div class="line"><span class="keywordtype">size_t</span> cViol1Cat=datastore1-&gt;addColumn(<span class="stringliteral">&quot;violin 1, cat&quot;</span>);</div>
@ -221,11 +221,11 @@ Drawing the (vertical) Violin Plot</h1>
<div class="line"> 21, <span class="keyword">true</span>, <span class="keyword">false</span>, <a class="code hl_enumvalue" href="group__jkqtptools__math__statistics__1dhist.html#ggab6b155ded164a7ae39a7024792251373ac271d359b3a61c63c913c77625757c7c">JKQTPStatHistogramBinXMode::XIsMid</a>);</div>
<div class="ttc" id="agroup__jkqtptools__math__statistics__1dhist_html_gaa83dbe625d4507f55629eaaf96a09cf8"><div class="ttname"><a href="group__jkqtptools__math__statistics__1dhist.html#gaa83dbe625d4507f55629eaaf96a09cf8">jkqtpstatHistogram1DAutoranged</a></div><div class="ttdeci">void jkqtpstatHistogram1DAutoranged(InputIt first, InputIt last, OutputIt histogramXOut, OutputIt histogramYOut, int bins=11, bool normalized=true, bool cummulative=false, JKQTPStatHistogramBinXMode binXMode=JKQTPStatHistogramBinXMode::XIsLeft)</div><div class="ttdoc">calculate an autoranged 1-dimensional histogram from the given data range first .....</div><div class="ttdef"><b>Definition</b> jkqtpstathistogram.h:73</div></div>
<div class="ttc" id="agroup__jkqtptools__math__statistics__1dhist_html_ggab6b155ded164a7ae39a7024792251373ac271d359b3a61c63c913c77625757c7c"><div class="ttname"><a href="group__jkqtptools__math__statistics__1dhist.html#ggab6b155ded164a7ae39a7024792251373ac271d359b3a61c63c913c77625757c7c">JKQTPStatHistogramBinXMode::XIsMid</a></div><div class="ttdeci">@ XIsMid</div><div class="ttdoc">x-location is the middle of the bin</div></div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md119"></a>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md121"></a>
Drawing a horizontal Violin Plot</h1>
<p>Finally note that if you use <code><a class="el" href="class_j_k_q_t_p_violinplot_horizontal_element.html" title="This implements a single horizontal Violin Plot as a &quot;geometric element&quot;.">JKQTPViolinplotHorizontalElement</a></code> instead of the <code><a class="el" href="class_j_k_q_t_p_violinplot_vertical_element.html" title="This implements a single vertical Violin Plot as a &quot;geometric element&quot;.">JKQTPViolinplotVerticalElement</a></code> used above, you can also draw horizontal violin plots:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/violinplot_hor.png" alt="violinplot_hor" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md120"></a>
<h1><a class="anchor" id="autotoc_md122"></a>
Adapters as shortcuts to drawing Violin Plots</h1>
<p>Note that there also exist "adapters" that allow to draw violin plots in one line of code: </p><div class="fragment"><div class="line"><a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga09d561a779b7bb36c3190f37b82cb297">jkqtpstatAddVViolinplotHistogramAndOutliers</a>(plot-&gt;getPlotter(), datastore1-&gt;begin(randomdatacol1), datastore1-&gt;end(randomdatacol1), -5);</div>
<div class="line"><a class="code hl_function" href="group__jkqtptools__math__statistics__adaptors.html#ga8ae3a2a1aee7bcb00787b53624dee15a">jkqtpstatAddHViolinplotHistogramAndOutliers</a>(plot-&gt;getPlotter(), datastore1-&gt;begin(randomdatacol1), datastore1-&gt;end(randomdatacol1), -5);</div>
@ -251,7 +251,7 @@ Adapters as shortcuts to drawing Violin Plots</h1>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -118,7 +118,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotter_wiggle_plots.html',''
<div class="contents">
<div class="textblock"><p>This project (see <code>./examples/wiggleplots/</code>) demonstrates how to draw "wiggle plots" with JKQtPlotter, using <code><a class="el" href="class_j_k_q_t_p_filled_curve_x_graph.html" title="This implements filled curve plots where the area is filled between the plot line and the x-Axis.">JKQTPFilledCurveXGraph</a></code> or <code><a class="el" href="class_j_k_q_t_p_filled_curve_y_graph.html" title="This implements filled curve plots where the area is filled between the plot line and y-Axis.">JKQTPFilledCurveYGraph</a></code>. Wiggle plots are plots, where the fill color is different above and below the baseline of the plot. They are e.g. used in seismology.</p>
<p>The source code of the main application can be found in <a href="https://github.com/jkriege2/JKQtPlotter/tree/master/examples/wiggleplots/wiggleplots.cpp"><code>wiggleplots.cpp</code></a>. If creates two different plots that demonstrate two styles of plots and also uses the horizontal and vertical variant of the graph class.</p>
<h1><a class="anchor" id="autotoc_md121"></a>
<h1><a class="anchor" id="autotoc_md116"></a>
Plot red/blue wiggle plot using &lt;tt&gt;JKQTPFilledCurveXGraph&lt;/tt&gt;</h1>
<p>For the first example we simulate a 1D random walk and plot the result as a filles wiggle plot:</p>
<p>In a first step, we obtain a pointer to the <a class="el" href="class_j_k_q_t_p_datastore.html" title="This class manages data columns (with entries of type double ), used by JKQTPlotter/JKQTBasePlotter t...">JKQTPDatastore</a> and add two columns to it. </p><div class="fragment"><div class="line"><span class="comment">// 1. get a pointer to the internal datastore (for convenience)</span></div>
@ -195,7 +195,7 @@ Plot red/blue wiggle plot using &lt;tt&gt;JKQTPFilledCurveXGraph&lt;/tt&gt;</h1>
<div class="line">plot.resize(600,400);</div>
</div><!-- fragment --><p>This is the resulting plot:</p>
<p><img src="https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/wiggleplot_x.png" alt="wiggleplot of random walk" class="inline"/></p>
<h1><a class="anchor" id="autotoc_md122"></a>
<h1><a class="anchor" id="autotoc_md117"></a>
Plot black/transparent wiggle plot using &lt;tt&gt;JKQTPFilledCurveYGraph&lt;/tt&gt; in a "seismographic style"</h1>
<p>The second example follows mor or less the same steps as above, but here we add several graphs that each show a wavepacket that is shoft slightly:</p>
<div class="fragment"><div class="line"><span class="comment">// 3. now we calculate several wavepackets and add a graph for each.</span></div>
@ -252,7 +252,7 @@ Plot black/transparent wiggle plot using &lt;tt&gt;JKQTPFilledCurveYGraph&lt;/tt
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -189,7 +189,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotterparamscatter_custom_sy
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -164,7 +164,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotterscatter.html',''); ini
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -231,7 +231,7 @@ $(document).ready(function(){initNavTree('_j_k_q_t_plotterscatter_custom_symbol.
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="example_tutorial_projects.html">Example &amp; Tutorial Projects</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:41 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -442,7 +442,7 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:43 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:32 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -177,7 +177,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_annotations_specific_sty
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -573,7 +573,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_annotations_specific_style_properties.html">JKQTAnnotationsSpecificStyleProperties</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -165,7 +165,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_barchart_specific_style_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -556,7 +556,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_barchart_specific_style_properties.html">JKQTBarchartSpecificStyleProperties</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -616,7 +616,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_base_plotter.html','');
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -1711,11 +1711,11 @@ Aspect Ratios</h2>
<p>First note that this functionality is only available and activated if both axes are linear!</p>
<p>You can set two different aspect ratios:</p><ul>
<li>The ratio of plotWidth/plotHeight (<a class="el" href="class_j_k_q_t_base_plotter.html#a06364dc4fb497fc42b7b8dbbe32f0638" title="sets the data aspect ratio, enforced with setMaintainApsectRatio(true)">setAspectRatio()</a>, <a class="el" href="class_j_k_q_t_base_plotter.html#a1360fa41c72a05e4142527e3322e2d61" title="en-/disables the maintaining of the data aspect ratio">setMaintainAspectRatio()</a>) will keep the plots pixel-width and height at a certain value. <p class="formulaDsp">
<picture><source srcset="form_238_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{aspectRatio}=\frac{\mbox{plotWidth}}{\mbox{plotHeight}} \]" src="form_238.png" width="182" height="39"/></picture>
<picture><source srcset="form_221_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{aspectRatio}=\frac{\mbox{plotWidth}}{\mbox{plotHeight}} \]" src="form_221.png" width="182" height="39"/></picture>
</p>
</li>
<li>The ratio of (xmax-xmin)/(ymax-ymin) (<a class="el" href="class_j_k_q_t_base_plotter.html#a9b2ec97c3bf2f8e86b70e278794ab149" title="sets the axis aspect ratio, enforced with setMaintainAxisApsectRatio(true)">setAxisAspectRatio()</a>, <a class="el" href="class_j_k_q_t_base_plotter.html#a3fdaa585b8b1a150321b19742091ddaa" title="en-/disables the maintaining of the axis aspect ratio">setMaintainAxisAspectRatio()</a>) will keep the displayed axis ranges in a certain ratio. <p class="formulaDsp">
<picture><source srcset="form_239_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_239.png" width="234" height="41"/></picture>
<picture><source srcset="form_222_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_222.png" width="234" height="41"/></picture>
</p>
</li>
</ul>
@ -12613,10 +12613,10 @@ y-axis</td></tr>
<table class="params">
<tr><td class="paramname">zoomX</td><td>if set <code>true</code> (default) zooms the x axis </td></tr>
<tr><td class="paramname">zoomY</td><td>if set <code>true</code> (default) zooms the y axis </td></tr>
<tr><td class="paramname">includeX0</td><td>if this is <code>true</code> <a class="el" href="class_j_k_q_t_base_plotter.html#a0f8b714129f2f387985231c186f4f618" title="this method zooms the graph so that all plotted datapoints are visible.">zoomToFit()</a> will ensure that <picture><source srcset="form_251_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ x=0 $" src="form_251.png" width="41" height="11"/></picture> is visible in the plot (only for non-logx plots, default: false) </td></tr>
<tr><td class="paramname">includeY0</td><td>if this is <code>true</code> <a class="el" href="class_j_k_q_t_base_plotter.html#a0f8b714129f2f387985231c186f4f618" title="this method zooms the graph so that all plotted datapoints are visible.">zoomToFit()</a> will ensure that <picture><source srcset="form_252_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ y=0 $" src="form_252.png" width="39" height="15"/></picture> is visible in the plot (only for non-logy plots, default: false) </td></tr>
<tr><td class="paramname">scaleX</td><td>the plot will have a width of <picture><source srcset="form_253_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \mbox{Xscale}\cdot\Delta x $" src="form_253.png" width="81" height="13"/></picture> where <picture><source srcset="form_254_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \Delta x $" src="form_254.png" width="23" height="13"/></picture> is the actual x-axis data range For logx plots we actually use this on the logarithmized data! (default: 1.05) </td></tr>
<tr><td class="paramname">scaleY</td><td>the plot will have a height of <picture><source srcset="form_255_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \mbox{Yscale}\cdot\Delta &lt; $" src="form_255.png" width="88" height="15"/></picture> where <picture><source srcset="form_256_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \Delta &lt; $" src="form_256.png" width="29" height="15"/></picture> is the actual &lt;-axis data range For log&lt; plots we actually use this on the logarithmized data! (default: 1.05) </td></tr>
<tr><td class="paramname">includeX0</td><td>if this is <code>true</code> <a class="el" href="class_j_k_q_t_base_plotter.html#a0f8b714129f2f387985231c186f4f618" title="this method zooms the graph so that all plotted datapoints are visible.">zoomToFit()</a> will ensure that <picture><source srcset="form_240_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ x=0 $" src="form_240.png" width="41" height="11"/></picture> is visible in the plot (only for non-logx plots, default: false) </td></tr>
<tr><td class="paramname">includeY0</td><td>if this is <code>true</code> <a class="el" href="class_j_k_q_t_base_plotter.html#a0f8b714129f2f387985231c186f4f618" title="this method zooms the graph so that all plotted datapoints are visible.">zoomToFit()</a> will ensure that <picture><source srcset="form_241_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ y=0 $" src="form_241.png" width="39" height="15"/></picture> is visible in the plot (only for non-logy plots, default: false) </td></tr>
<tr><td class="paramname">scaleX</td><td>the plot will have a width of <picture><source srcset="form_242_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \mbox{Xscale}\cdot\Delta x $" src="form_242.png" width="81" height="13"/></picture> where <picture><source srcset="form_243_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \Delta x $" src="form_243.png" width="23" height="13"/></picture> is the actual x-axis data range For logx plots we actually use this on the logarithmized data! (default: 1.05) </td></tr>
<tr><td class="paramname">scaleY</td><td>the plot will have a height of <picture><source srcset="form_244_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \mbox{Yscale}\cdot\Delta &lt; $" src="form_244.png" width="88" height="15"/></picture> where <picture><source srcset="form_245_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \Delta &lt; $" src="form_245.png" width="29" height="15"/></picture> is the actual &lt;-axis data range For log&lt; plots we actually use this on the logarithmized data! (default: 1.05) </td></tr>
</table>
</dd>
</dl>
@ -13027,7 +13027,7 @@ y-axis</td></tr>
<p>the aspect ratio of plotwidth and plotheight to maintain, if <code>maintainAspectRatio==true</code> </p>
<p class="formulaDsp">
<picture><source srcset="form_238_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{aspectRatio}=\frac{\mbox{plotWidth}}{\mbox{plotHeight}} \]" src="form_238.png" width="182" height="39"/></picture>
<picture><source srcset="form_221_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{aspectRatio}=\frac{\mbox{plotWidth}}{\mbox{plotHeight}} \]" src="form_221.png" width="182" height="39"/></picture>
</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_j_k_q_t_base_plotter.html#af0720a1e655e8f24ef3914874b2dfec8" title="indicates whether the widget should maintain an aspect ratio of plotwidth and plotheight">maintainAspectRatio</a> </dd></dl>
@ -13055,7 +13055,7 @@ y-axis</td></tr>
<p>the aspect ratio of axis widths to maintain, if <code>maintainAxisAspectRatio==true</code> </p>
<p>When the axis aspect ratio is to be maintained and new axis ranges are set (e.g. when calling <a class="el" href="class_j_k_q_t_base_plotter.html#ad7c6f70086ae7762a22c4c35509878e1" title="sets the x- and y-range of the plot (minimum and maximum values on the x-/y-axis)">setXY()</a> ), the given axis ranges are modified, so </p><p class="formulaDsp">
<picture><source srcset="form_239_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_239.png" width="234" height="41"/></picture>
<picture><source srcset="form_222_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_222.png" width="234" height="41"/></picture>
</p>
<dl class="section note"><dt>Note</dt><dd>An axis aspect ratio is only well defined for linear axes (if both axes are linear). If both axes a logarithmic, the axis ration is defined for log(axismax)-log(axismin). For other combinations of axes, this function is deactivated</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_j_k_q_t_base_plotter.html#a137bf3f5fcd473fbb4177290eb53db6d" title="indicates whether the axes should maintain an aspect ratio">maintainAxisAspectRatio</a> </dd></dl>
@ -14137,7 +14137,7 @@ y-axis</td></tr>
<p>indicates whether the axes should maintain an aspect ratio </p>
<p>When the axis aspect ratio is to be maintained and new axis ranges are set (e.g. when calling <a class="el" href="class_j_k_q_t_base_plotter.html#ad7c6f70086ae7762a22c4c35509878e1" title="sets the x- and y-range of the plot (minimum and maximum values on the x-/y-axis)">setXY()</a> ), the given axis ranges are modified, so </p><p class="formulaDsp">
<picture><source srcset="form_239_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_239.png" width="234" height="41"/></picture>
<picture><source srcset="form_222_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \mbox{axisAspectRatio}=\frac{\left|x_\text{max}-x_\text{min}\right|}{\left|y_\text{max}-y_\text{min}\right|} \]" src="form_222.png" width="234" height="41"/></picture>
</p>
<dl class="section note"><dt>Note</dt><dd>An axis aspect ratio is only well defined for linear axes (if both axes are linear). If both axes a logarithmic, the axis ration is defined for log(axismax)-log(axismin). For other combinations of axes, this function is deactivated</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_j_k_q_t_base_plotter.html#a4664db3c06865c8618dd0c70c7551caf" title="the aspect ratio of axis widths to maintain, if maintainAxisAspectRatio==true">axisAspectRatio</a> </dd></dl>
@ -14949,7 +14949,7 @@ y-axis</td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter.html">JKQTBasePlotter</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -176,7 +176,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_base_plotter_1_1_j_k_q_t
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -1057,7 +1057,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter.html">JKQTBasePlotter</a></li><li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter_1_1_j_k_q_t_p_pen.html">JKQTPPen</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -142,7 +142,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_base_plotter_1_1_plot_ma
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -395,7 +395,7 @@ Public Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter.html">JKQTBasePlotter</a></li><li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter_1_1_plot_margins.html">PlotMargins</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -170,7 +170,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_base_plotter_style.html'
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -938,7 +938,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_base_plotter_style.html">JKQTBasePlotterStyle</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -186,7 +186,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_line_plot.html','');
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -1567,7 +1567,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_line_plot.html">JKQTFPLinePlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_plot.html',''); init
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -444,7 +444,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_plot.html">JKQTFPPlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -160,7 +160,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_q_image_plot.html','
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -758,7 +758,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_q_image_plot.html">JKQTFPQImagePlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -156,7 +156,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_q_overlay_linear_gri
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -642,7 +642,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_q_overlay_linear_grid_plot.html">JKQTFPQOverlayLinearGridPlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_q_scale_bar_x_plot.h
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -883,7 +883,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_q_scale_bar_x_plot.html">JKQTFPQScaleBarXPlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -218,7 +218,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_r_g_b_image_overlay_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -2710,7 +2710,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_r_g_b_image_overlay_plot.html">JKQTFPRGBImageOverlayPlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -188,7 +188,7 @@ $(document).ready(function(){initNavTree('class_j_k_q_t_f_p_v_bar_plot.html','')
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

View File

@ -496,7 +496,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_j_k_q_t_f_p_v_bar_plot.html">JKQTFPVBarPlot</a></li>
<li class="footer">Generated on Fri Oct 18 2024 12:31:42 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
<li class="footer">Generated on Wed Oct 30 2024 21:02:31 for JKQTPlotter by <a href="https://www.doxygen.org/index.html">doxygen</a> 1.9.8 </li>
</ul>
</div>
</body>

Some files were not shown because too many files have changed in this diff Show More