JKQtPlotter/test/simpletest_errorbarstyles/README.md
jkriege2 49e5c616bc some renames for shorter directory/filenames
some improvements to README.md
2018-12-07 22:54:59 +01:00

120 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Back to JKQTPlotter main page](https://github.com/jkriege2/JKQtPlotter/)
# JKQtPlotter
## Different Types of Errorindicators
This project (see `./test/simpletest_errorbarstyles/`) simply creates a JKQtPlotter widget (as a new window) and adds several curves show-casing different styles of error indicators. Data is initialized from two QVector<double> objects.
The source code of the main application can be found in [`jkqtplotter_simpletest_errorbarstyles.cpp´]((https://github.com/jkriege2/JKQtPlotter/blob/master/test/simpletest_errorbarstyles/jkqtplotter_simpletest_errorbarstyles.cpp).
First some data is added to the internal datastore (mostly, like explained in several other examples, like e.g. [Line Graph with Different Symbols and Line Styles](https://github.com/jkriege2/JKQtPlotter/tree/master/test/simpletest_symbols_and_styles)). The (in a loop) several graphs are added, each with a distinct style for its error indicators:
```c++
// 3. now we make several plots with different error styles
// for that we iterate over every style from the vector errorStyles
// the array showXandYError indicates whether we want x- and y-error
// for a style for all stywhere this is false, only y-error-indicators
// are shown
QVector<JKQTPerrorPlotstyle> errorStyles {JKQTPnoError, JKQTPerrorBars, JKQTPerrorSimpleBars, JKQTPerrorLines, JKQTPerrorPolygons, JKQTPerrorBoxes, JKQTPerrorEllipses, JKQTPerrorBarsPolygons, JKQTPerrorBarsLines, JKQTPerrorSimpleBarsLines, JKQTPerrorSimpleBarsPolygons };
QVector<bool> showXandYError { false , true , true , false , false , true , true , false , false , false , false };
for (int errorID=0; errorID<errorStyles.size(); errorID++) {
// generate some plot data
QVector<double> Y;
for (auto& xx: X) {
Y<<xx*0.5+static_cast<double>(errorID)*2.5;
}
// create a graph object
JKQTPxyLineErrorGraph* graph=new JKQTPxyLineErrorGraph(&plot);
// copy data into datastore and immediately set the yColumn
graph->set_xColumn(columnX);
graph->set_yColumn(ds->addCopiedColumn(Y, "y"+QString::number(errorID)));
graph->set_xErrorColumn(columnXError);
graph->set_yErrorColumn(columnYError);
// set error style, for the y-axis
graph->set_yErrorStyle(errorStyles[errorID]);
// no error indicators for the x-values
graph->set_xErrorStyle(JKQTPnoError);
// ... unless: for some error styles we want error in both directions
if (showXandYError[errorID]) {
graph->set_xErrorStyle(errorStyles[errorID]);
graph->set_drawLine(false);
}
// make error indicator 30% transparent
QColor c=graph->get_errorFillColor();
c.setAlphaF(0.3);
graph->set_errorFillColor(c);
// set error indicator line width
graph->set_errorWidth(1);
// set length of small bars at the end of error bars
graph->set_errorbarSize(15);
// set symbol (cross/X) + pen style (and color)dashed)
graph->set_symbol(JKQTPcross);
graph->set_style(Qt::DashLine);
// set symbol size
graph->set_symbolSize(5);
// set width of symbol lines
graph->set_symbolWidth(1);
// set width of graph line
graph->set_lineWidth(1);
// graph title is made from symbol+errorStylestyle, we use the LaTeX instruction \verb around the
// result of JKQTPerrorPlotstyle2String(), because it contains underscores that would otherwise
// lead to lower-case letter, which we don't want
graph->set_title("\\verb{"+JKQTPerrorPlotstyle2String(errorStyles[errorID])+"}");
// add the graph to the plot, so it is actually displayed
plot.addGraph(graph);
}
```
The error styles are set in these lines:
```c++
// set error style, for the y-axis
graph->set_yErrorStyle(errorStyles[errorID]);
// no error indicators for the x-values
graph->set_xErrorStyle(errorStyles[errorID]);
```
There are several variables that can be used to further style the error indicator, like:
```c++
// make error indicator 30% transparent
QColor c=graph->get_errorFillColor();
c.setAlphaF(0.3);
graph->set_errorFillColor(c);
// set error indicator line width
graph->set_errorWidth(1);
// set length of small bars at the end of error bars
graph->set_errorbarSize(15);
```
There are more properties that you can find in the documentation of the mix-in classes `JKQTPxyGraphErrors`, `JKQTPxGraphErrors`, `JKQTPyGraphErrors`, `JKQTPgraphErrors`.
In addition the plot key is moved outside the pot and the grid in the plot is switched off:
```c++
// 6. change locaion of key (outside top-right)
plot.get_plotter()->set_keyPosition(JKQTPkeyOutsideRightTop);
// ... and switch off the grid
plot.getXAxis()->set_drawGrid(false);
plot.getXAxis()->set_drawMinorGrid(false);
plot.getYAxis()->set_drawGrid(false);
plot.getYAxis()->set_drawMinorGrid(false);
```
The result looks like this:
![jkqtplotter_simpletest_errorbarstyles](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_errorbarstyles.png)
Error bars are implemented in the mixin-classes `JKQTPxyGraphErrors`, `JKQTPxGraphErrors` and `JKQTPyGraphErrors` that are all derived from `JKQTPgraphErrors`. With these it is simple to add error indicators to several different plot styles. Usually you can recognize these by looking at the class name, e.g. `JKQTPxyLineGraph` is a simple line+symbol graph, and `JKQTPxyLineErrorGraph` is the same with error indictaors (see above). There are also several other plots with error indicators:
- `JKQTPbarVerticalErrorGraph` for barcharts with errors:<br>![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_errorbarstyles_barcharts.png)
- `JKQTPimpulsesVerticalGraph` for impulse/candle-stick charts with errors:<br>![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_errorbarstyles_impulses.png)
- `JKQTPfilledCurveXErrorGraph` for filled curves with errors:<br>![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_errorbarstyles_filledcurves.png)
.
[Back to JKQTPlotter main page](https://github.com/jkriege2/JKQtPlotter/)