IDateTimeMeasureUnitsCalculator.CalculateMeasureUnit(IEnumerable<Series>, Double, Int32, Double, Double, Double, Double) Method
Calculates the date-time measurement unit that an axis should use for display.
Namespace: DevExpress.Xpf.Charts
Assembly: DevExpress.Xpf.Charts.v18.2.dll
Declaration
DateTimeMeasureUnit CalculateMeasureUnit(
IEnumerable<Series> series,
double axisLength,
int pixelsPerUnit,
double visualMin,
double visualMax,
double wholeMin,
double wholeMax
)
Parameters
Name | Type | Description |
---|---|---|
series | IEnumerable<Series> | |
axisLength | Double | The length of the axis’s visual range in pixels. |
pixelsPerUnit | Int32 | The minimum count of pixels that series require to draw their points correctly. |
visualMin | Double | The visual range’s minimum value in milliseconds. |
visualMax | Double | The visual range’s maximum value in milliseconds. |
wholeMin | Double | The whole range’s minimum value in milliseconds. |
wholeMax | Double | The whole range’s maximum value in milliseconds. |
Returns
Type | Description |
---|---|
DateTimeMeasureUnit | The calculated measurement unit. |
Remarks
For example, bars can overlap each other if the calculated measurement unit covers fewer pixels on the axis than the pixelPerUnit parameter specifies.
Example
The automatic date-time scale options provide the capability to use a custom measurement unit calculator to determine the current measurement unit if the predefined one does not fit your requirements. Create a class that implements the IDateTimeMeasureUnitsCalculator interface and assign it to the AutomaticDateTimeScaleOptions.AutomaticMeasureUnitsCalculator property to use a custom measurement units calculation algorithm:
public class CustomAutomaticDateTimeMeasureUnitsCalculator : IDateTimeMeasureUnitsCalculator {
public DateTimeMeasureUnit CalculateMeasureUnit(
IEnumerable<Series> series,
double axisLength, int pixelsPerUnit,
double visualMin, double visualMax,
double wholeMin, double wholeMax
) {
double rawMeasureUnit = ((visualMax - visualMin) * pixelsPerUnit / axisLength);
return PickDateTimeMeasureUnit(rawMeasureUnit);
}
static int[] unitMultipliers = {
1, 1000, 60, 60, 24, 7, 4, 3, 4
};
static DateTimeMeasureUnit PickDateTimeMeasureUnit(double milliseconds) {
double valueStop = 1.0;
for (int i = 0; i < unitMultipliers.Length; i++) {
valueStop *= unitMultipliers[i];
if (milliseconds <= valueStop)
return (DateTimeMeasureUnit)i;
}
return DateTimeMeasureUnit.Year;
}
}
Related GitHub Examples
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the CalculateMeasureUnit(IEnumerable<Series>, Double, Int32, Double, Double, Double, Double) method.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.