diff --git a/packages/grafana-data/src/transformations/transformers/histogram.ts b/packages/grafana-data/src/transformations/transformers/histogram.ts index b4f276511af..58bc951d2e2 100644 --- a/packages/grafana-data/src/transformations/transformers/histogram.ts +++ b/packages/grafana-data/src/transformations/transformers/histogram.ts @@ -165,6 +165,8 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform } } + allValues = allValues.filter((v) => v != null); + allValues.sort((a, b) => a - b); let smallestDelta = Infinity; @@ -202,6 +204,9 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform const getBucket = (v: number) => incrRoundDn(v - bucketOffset, bucketSize!) + bucketOffset; + // guess number of decimals + let bucketDecimals = (('' + bucketSize).match(/\.\d+$/) ?? ['.'])[0].length - 1; + let histograms: AlignedData[] = []; let counts: Field[] = []; let config: FieldConfig | undefined = undefined; @@ -249,7 +254,13 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform values: new ArrayVector(joinedHists[0]), type: FieldType.number, state: undefined, - config: config ?? {}, + config: + bucketDecimals === 0 + ? config ?? {} + : { + ...config, + decimals: bucketDecimals, + }, }; const bucketMax = { ...bucketMin,