#include <genesis/utils/tools/tickmarks.hpp>
Helper class to find "nice" tickmark intervals for creating scales and axes.
Definition at line 48 of file tickmarks.hpp.
Public Member Functions | |
Tickmarks ()=default | |
Tickmarks (Tickmarks &&)=default | |
Tickmarks (Tickmarks const &)=default | |
~Tickmarks ()=default | |
std::vector< LabeledTick > | linear_labels (double min, double max, size_t target_steps) |
Return a set of labels with relative positions between min and max , where the labels correspond to the linear_ticks() numbers. More... | |
std::vector< double > | linear_ticks (double min, double max, size_t target_steps) |
Calculate a set of ticks that linearily span from min to max in approximately target_steps many steps, where each tick sits on a "nice" number. More... | |
std::vector< LabeledTick > | logarithmic_labels (double min, double max, double base=10.0) |
Return a set of labels with relative positions between min and max , where the labels correspond to logarithmic ticks. More... | |
Tickmarks & | operator= (Tickmarks &&)=default |
Tickmarks & | operator= (Tickmarks const &)=default |
Static Public Member Functions | |
static double | step_size (double interval_size, size_t target_steps) |
Calculate a step size that fills the interval_size in approximately target_steps many steps. More... | |
Public Attributes | |
bool | include_max = true |
Should the provided max value be included in the resulting list of ticks or not. More... | |
bool | include_min = true |
Should the provided min value be included in the resulting list of ticks or not. More... | |
bool | overshoot_at_max = false |
Should the highest value in the resulting list of ticks be above the provided max value (true ) or not (false ). More... | |
double | relative_epsilon = std::numeric_limits<double>::epsilon() |
Relative epsilon used to exclude two tickmarks that are too close to each other. More... | |
bool | undershoot_at_min = false |
Should the lowest value in the resulting list of ticks be below the provided min value (true ) or not (false ). More... | |
Classes | |
struct | LabeledTick |
|
default |
|
default |
std::vector< Tickmarks::LabeledTick > linear_labels | ( | double | min, |
double | max, | ||
size_t | target_steps | ||
) |
Return a set of labels with relative positions between min
and max
, where the labels correspond to the linear_ticks() numbers.
This function is a convenience wrapper for linear_ticks(), that turns the tick positions into relative values, while keeping the actual tick value as a label. Relative position 0.0 corresponds to min
, relative position 1.0 to max
.
Definition at line 147 of file tickmarks.cpp.
std::vector< double > linear_ticks | ( | double | min, |
double | max, | ||
size_t | target_steps | ||
) |
Calculate a set of ticks that linearily span from min
to max
in approximately target_steps
many steps, where each tick sits on a "nice" number.
See step_size() for what is meant by nice numbers.
Definition at line 83 of file tickmarks.cpp.
std::vector< Tickmarks::LabeledTick > logarithmic_labels | ( | double | min, |
double | max, | ||
double | base = 10.0 |
||
) |
Return a set of labels with relative positions between min
and max
, where the labels correspond to logarithmic ticks.
This function is the equivalent of linear_labels(), but instead uses logarithmic scaling. Also, it inserts as many ticks as are needed to go up to max
in powers of base
, and thus has no target steps.
Example: Given min == 1.0
, max == 350
, with overshoot_at_max == false
and include_max == true
, the resulting vector contains entries with labels 1, 10, 100, 350
.
Remark: There is no logarithmic equivalent for linear_ticks(), as those would simply be powers of base
up to max
.
Definition at line 162 of file tickmarks.cpp.
|
static |
Calculate a step size that fills the interval_size
in approximately target_steps
many steps.
The resulting step size is calculated to be a "nice" size, i.e. fits [ 1 | 2 | 5 ] * 10^n
. Thus, exemplary nice step sizes are 0.01, 20 and 500.
Definition at line 47 of file tickmarks.cpp.
bool include_max = true |
Should the provided max value be included in the resulting list of ticks or not.
Definition at line 141 of file tickmarks.hpp.
bool include_min = true |
Should the provided min value be included in the resulting list of ticks or not.
Definition at line 136 of file tickmarks.hpp.
bool overshoot_at_max = false |
Should the highest value in the resulting list of ticks be above the provided max value (true
) or not (false
).
Definition at line 153 of file tickmarks.hpp.
double relative_epsilon = std::numeric_limits<double>::epsilon() |
Relative epsilon used to exclude two tickmarks that are too close to each other.
Definition at line 158 of file tickmarks.hpp.
bool undershoot_at_min = false |
Should the lowest value in the resulting list of ticks be below the provided min value (true
) or not (false
).
Definition at line 147 of file tickmarks.hpp.