Histogram: Fix heuristic for x axis distribution from bucket progression (#83975)

This commit is contained in:
Leon Sorokin
2024-03-06 11:27:46 -06:00
committed by GitHub
parent 7f2e245d0b
commit e88858edb1
2 changed files with 8 additions and 3 deletions
@@ -403,7 +403,7 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform
}
}
const getBucket = (v: number) => incrRoundDn(v - bucketOffset, bucketSize!) + bucketOffset;
const getBucket = (v: number) => roundDecimals(incrRoundDn(v - bucketOffset, bucketSize!) + bucketOffset, 9);
// guess number of decimals
let bucketDecimals = (('' + bucketSize).match(/\.\d+$/) ?? ['.'])[0].length - 1;
@@ -8,6 +8,7 @@ import {
getFieldColorModeForField,
getFieldSeriesColor,
GrafanaTheme2,
roundDecimals,
} from '@grafana/data';
import {
histogramBucketSizes,
@@ -49,12 +50,16 @@ export interface HistogramProps extends Themeable2 {
export function getBucketSize(frame: DataFrame) {
// assumes BucketMin is fields[0] and BucktMax is fields[1]
return frame.fields[0].type === FieldType.string ? 1 : frame.fields[1].values[0] - frame.fields[0].values[0];
return frame.fields[0].type === FieldType.string
? 1
: roundDecimals(frame.fields[1].values[0] - frame.fields[0].values[0], 9);
}
export function getBucketSize1(frame: DataFrame) {
// assumes BucketMin is fields[0] and BucktMax is fields[1]
return frame.fields[0].type === FieldType.string ? 1 : frame.fields[1].values[1] - frame.fields[0].values[1];
return frame.fields[0].type === FieldType.string
? 1
: roundDecimals(frame.fields[1].values[1] - frame.fields[0].values[1], 9);
}
const prepConfig = (frame: DataFrame, theme: GrafanaTheme2) => {