Skip to content

Commit

Permalink
Histogram: auto-skip x tick labels to avoid overlap (grafana#45996)
Browse files Browse the repository at this point in the history
  • Loading branch information
leeoniya committed Mar 1, 2022
1 parent 1c4b20b commit b491d6b
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions public/app/plugins/panel/histogram/Histogram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@ import {
getFieldSeriesColor,
GrafanaTheme2,
} from '@grafana/data';
import { Themeable2, UPlotConfigBuilder, UPlotChart, VizLayout, PlotLegend } from '@grafana/ui';
import {
Themeable2,
UPlotConfigBuilder,
UPlotChart,
VizLayout,
PlotLegend,
measureText,
UPLOT_AXIS_FONT_SIZE,
} from '@grafana/ui';

import {
histogramBucketSizes,
Expand Down Expand Up @@ -119,7 +127,20 @@ const prepConfig = (frame: DataFrame, theme: GrafanaTheme2) => {
placement: AxisPlacement.Bottom,
incrs: histogramBucketSizes,
splits: xSplits,
values: (u: uPlot, vals: any[]) => vals.map(xAxisFormatter),
values: (u: uPlot, splits: any[]) => {
const tickLabels = splits.map(xAxisFormatter);

const maxWidth = tickLabels.reduce(
(curMax, label) => Math.max(measureText(label, UPLOT_AXIS_FONT_SIZE).width, curMax),
0
);

const labelSpacing = 10;
const maxCount = u.bbox.width / ((maxWidth + labelSpacing) * devicePixelRatio);
const keepMod = Math.ceil(tickLabels.length / maxCount);

return tickLabels.map((label, i) => (i % keepMod === 0 ? label : null));
},
//incrs: () => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((mult) => mult * bucketSize),
//splits: config.xSplits,
//values: config.xValues,
Expand Down

0 comments on commit b491d6b

Please sign in to comment.