Specialized axis ticker for time spans in units of milliseconds to days. More...
Public Types | |
enum | TimeUnit |
enum | TimeUnit |
![]() | |
enum | TickStepStrategy |
enum | TickStepStrategy |
Public Functions | |
QCPAxisTickerTime () | |
QString | timeFormat () const |
int | fieldWidth (TimeUnit unit) const |
void | setTimeFormat (const QString &format) |
void | setFieldWidth (TimeUnit unit, int width) |
QString | timeFormat () const |
int | fieldWidth (TimeUnit unit) const |
void | setTimeFormat (const QString &format) |
void | setFieldWidth (TimeUnit unit, int width) |
![]() | |
QCPAxisTicker () | |
TickStepStrategy | tickStepStrategy () const |
int | tickCount () const |
double | tickOrigin () const |
void | setTickStepStrategy (TickStepStrategy strategy) |
void | setTickCount (int count) |
void | setTickOrigin (double origin) |
virtual void | generate (const QCPRange &range, const QLocale &locale, QChar formatChar, int precision, QVector< double > &ticks, QVector< double > *subTicks, QVector< QString > *tickLabels) |
TickStepStrategy | tickStepStrategy () const |
int | tickCount () const |
double | tickOrigin () const |
void | setTickStepStrategy (TickStepStrategy strategy) |
void | setTickCount (int count) |
void | setTickOrigin (double origin) |
virtual void | generate (const QCPRange &range, const QLocale &locale, QChar formatChar, int precision, QVector< double > &ticks, QVector< double > *subTicks, QVector< QString > *tickLabels) |
Protected Functions | |
virtual double | getTickStep (const QCPRange &range) |
virtual int | getSubTickCount (double tickStep) |
virtual QString | getTickLabel (double tick, const QLocale &locale, QChar formatChar, int precision) |
void | replaceUnit (QString &text, TimeUnit unit, int value) const |
virtual double | getTickStep (const QCPRange &range) |
virtual int | getSubTickCount (double tickStep) |
virtual QString | getTickLabel (double tick, const QLocale &locale, QChar formatChar, int precision) |
void | replaceUnit (QString &text, TimeUnit unit, int value) const |
![]() | |
virtual QVector< double > | createTickVector (double tickStep, const QCPRange &range) |
virtual QVector< double > | createSubTickVector (int subTickCount, const QVector< double > &ticks) |
virtual QVector< QString > | createLabelVector (const QVector< double > &ticks, const QLocale &locale, QChar formatChar, int precision) |
void | trimTicks (const QCPRange &range, QVector< double > &ticks, bool keepOneOutlier) const |
double | pickClosest (double target, const QVector< double > &candidates) const |
double | getMantissa (double input, double *magnitude=0) const |
double | cleanMantissa (double input) const |
virtual QVector< double > | createTickVector (double tickStep, const QCPRange &range) |
virtual QVector< double > | createSubTickVector (int subTickCount, const QVector< double > &ticks) |
virtual QVector< QString > | createLabelVector (const QVector< double > &ticks, const QLocale &locale, QChar formatChar, int precision) |
void | trimTicks (const QCPRange &range, QVector< double > &ticks, bool keepOneOutlier) const |
double | pickClosest (double target, const QVector< double > &candidates) const |
double | getMantissa (double input, double *magnitude=0) const |
double | cleanMantissa (double input) const |
Specialized axis ticker for time spans in units of milliseconds to days.
This QCPAxisTicker subclass generates ticks that corresponds to time intervals.
The format of the time display in the tick labels is controlled with setTimeFormat and setFieldWidth. The time coordinate is in the unit of seconds with respect to the time coordinate zero. Unlike with QCPAxisTickerDateTime, the ticks don't correspond to a specific calendar date and time.
The time can be displayed in milliseconds, seconds, minutes, hours and days. Depending on the largest available unit in the format specified with setTimeFormat, any time spans above will be carried in that largest unit. So for example if the format string is "%m:%s" and a tick at coordinate value 7815 (being 2 hours, 10 minutes and 15 seconds) is created, the resulting tick label will show "130:15" (130 minutes, 15 seconds). If the format string is "%h:%m:%s", the hour unit will be used and the label will thus be "02:10:15". Negative times with respect to the axis zero will carry a leading minus sign.
The ticker can be created and assigned to an axis like this:
Here is an example of a time axis providing time information in days, hours and minutes. Due to the axis range spanning a few days and the wanted tick count (setTickCount), the ticker decided to use tick steps of 12 hours:
The format string for this example is
Defines the logical units in which fractions of time spans can be expressed.
Enumerator | |
---|---|
tuMilliseconds | Milliseconds, one thousandth of a second (%z in setTimeFormat) |
tuSeconds | Seconds (%s in setTimeFormat) |
tuMinutes | Minutes (%m in setTimeFormat) |
tuHours | Hours (%h in setTimeFormat) |
tuDays | Days (%d in setTimeFormat) |
tuMilliseconds | Milliseconds, one thousandth of a second (%z in setTimeFormat) |
tuSeconds | Seconds (%s in setTimeFormat) |
tuMinutes | Minutes (%m in setTimeFormat) |
tuHours | Hours (%h in setTimeFormat) |
tuDays | Days (%d in setTimeFormat) |
Defines the logical units in which fractions of time spans can be expressed.
Enumerator | |
---|---|
tuMilliseconds | Milliseconds, one thousandth of a second (%z in setTimeFormat) |
tuSeconds | Seconds (%s in setTimeFormat) |
tuMinutes | Minutes (%m in setTimeFormat) |
tuHours | Hours (%h in setTimeFormat) |
tuDays | Days (%d in setTimeFormat) |
tuMilliseconds | Milliseconds, one thousandth of a second (%z in setTimeFormat) |
tuSeconds | Seconds (%s in setTimeFormat) |
tuMinutes | Minutes (%m in setTimeFormat) |
tuHours | Hours (%h in setTimeFormat) |
tuDays | Days (%d in setTimeFormat) |
QCPAxisTickerTime::QCPAxisTickerTime | ( | ) |
Constructs the ticker and sets reasonable default values. Axis tickers are commonly created managed by a QSharedPointer, which then can be passed to QCPAxis::setTicker.
void QCPAxisTickerTime::setTimeFormat | ( | const QString & | format | ) |
Sets the format that will be used to display time in the tick labels.
The available patterns are:
The field width (zero padding) can be controlled for each unit with setFieldWidth.
The largest unit that appears in format will carry all the remaining time of a certain tick coordinate, even if it overflows the natural limit of the unit. For example, if %m is the largest unit it might become larger than 59 in order to consume larger time values. If on the other hand %h is available, the minutes will wrap around to zero after 59 and the time will carry to the hour digit.
void QCPAxisTickerTime::setFieldWidth | ( | QCPAxisTickerTime::TimeUnit | unit, |
int | width | ||
) |
Sets the field widh of the specified unit to be width digits, when displayed in the tick label. If the number for the specific unit is shorter than width, it will be padded with an according number of zeros to the left in order to reach the field width.
|
protectedvirtual |
Returns the tick step appropriate for time displays, depending on the provided range and the smallest available time unit in the current format (setTimeFormat). For example if the unit of seconds isn't available in the format, this method will not generate steps (like 2.5 minutes) that require sub-minute precision to be displayed correctly.
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Returns the sub tick count appropriate for the provided tickStep and time displays.
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Returns the tick label corresponding to the provided tick and the configured format and field widths (setTimeFormat, setFieldWidth).
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protected |
Replaces all occurrences of the format pattern belonging to unit in text with the specified value, using the field width as specified with setFieldWidth for the unit.
|
protectedvirtual |
Takes the entire currently visible axis range and returns a sensible tick step in order to provide readable tick labels as well as a reasonable number of tick counts (see setTickCount, setTickStepStrategy).
If a QCPAxisTicker subclass only wants a different tick step behaviour than the default implementation, it should reimplement this method. See cleanMantissa for a possible helper function.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Takes the tickStep, i.e. the distance between two consecutive ticks, and returns an appropriate number of sub ticks for that specific tick step.
Note that a returned sub tick count of e.g. 4 will split each tick interval into 5 sections.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
This method returns the tick label string as it should be printed under the tick coordinate. If a textual number is returned, it should respect the provided locale, formatChar and precision.
If the returned value contains exponentials of the form "2e5" and beautifully typeset powers is enabled in the QCPAxis number format (QCPAxis::setNumberFormat), the exponential part will be formatted accordingly using multiplication symbol and superscript during rendering of the label automatically.
Reimplemented from QCPAxisTicker.