You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/10/22 15:18:22 UTC

(superset) branch master updated: feat(echarts): allow configuring minInterval on bar and line chart axes (#43515)

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 97a536f37d9 feat(echarts): allow configuring minInterval on bar and line chart axes (#43515)
97a536f37d9 is described below

commit 97a536f37d9b955874768a0ad724ce50c26e86e9
Author: Michael Gerber <mi...@nxt.engineering>
AuthorDate: Thu Oct 22 17:18:13 2026 +0200

    feat(echarts): allow configuring minInterval on bar and line chart axes (#43515)
    
    Co-authored-by: Evan Rusackas <ev...@rusackas.com>
    Co-authored-by: Evan Rusackas <ev...@preset.io>
    Co-authored-by: Claude Sonnet 5 <no...@anthropic.com>
---
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |  28 +++++
 .../src/Timeseries/Regular/Line/controlPanel.tsx   |  19 +++
 .../src/Timeseries/transformProps.ts               |  26 ++++-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |   2 +
 .../plugins/plugin-chart-echarts/src/controls.tsx  |  30 +++++
 .../test/Timeseries/Bar/controlPanel.test.ts       |  28 +++++
 .../test/Timeseries/Line/controlPanel.test.ts      |  42 +++++++
 .../test/Timeseries/helpers.ts                     |   1 +
 .../test/Timeseries/transformProps.test.ts         | 128 +++++++++++++++++++++
 superset/translations/ar/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/ca/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/cs/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/de/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/en/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/es/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/fa/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/fi/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/fr/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/it/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/ja/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/ko/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/lv/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/messages.pot                 |  15 +++
 superset/translations/mi/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/nl/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/pl/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/pt/LC_MESSAGES/messages.po   |  19 +++
 .../translations/pt_BR/LC_MESSAGES/messages.po     |  19 +++
 superset/translations/ro/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/ru/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/sk/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/sl/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/sr/LC_MESSAGES/messages.po   |  19 +++
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/ta/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/th/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/tr/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/uk/LC_MESSAGES/messages.po   |  19 +++
 superset/translations/zh/LC_MESSAGES/messages.po   |  19 +++
 .../translations/zh_TW/LC_MESSAGES/messages.po     |  19 +++
 40 files changed, 887 insertions(+), 2 deletions(-)

diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
index 34c5bbb22d4..2822b6e7644 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx
@@ -50,6 +50,8 @@ import {
   xAxisBounds,
   xAxisLabelRotation,
   xAxisLabelInterval,
+  xAxisMinInterval,
+  yAxisMinInterval,
   forceMaxInterval,
   colorByPrimaryAxisSection,
 } from '../../../controls';
@@ -225,6 +227,19 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
         },
       },
     ],
+    [
+      {
+        name: xAxisMinInterval.name,
+        config: {
+          ...xAxisMinInterval.config,
+          label: t('Minimum Interval'),
+          visibility: ({ controls }: ControlPanelsContainerProps) =>
+            isXAxis ? isVertical(controls) : isHorizontal(controls),
+          disableStash: true,
+          resetOnHide: false,
+        },
+      },
+    ],
     [
       {
         name: 'y_axis_format',
@@ -239,6 +254,19 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
       },
     ],
     ['currency_format'],
+    [
+      {
+        name: yAxisMinInterval.name,
+        config: {
+          ...yAxisMinInterval.config,
+          label: t('Minimum Interval'),
+          visibility: ({ controls }: ControlPanelsContainerProps) =>
+            isXAxis ? isHorizontal(controls) : isVertical(controls),
+          disableStash: true,
+          resetOnHide: false,
+        },
+      },
+    ],
     [
       {
         name: 'logAxis',
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
index 9f02dc5fbae..c906e258223 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx
@@ -47,6 +47,8 @@ import {
   xAxisBounds,
   xAxisLabelRotation,
   xAxisLabelInterval,
+  xAxisMinInterval,
+  yAxisMinInterval,
   forceMaxInterval,
 } from '../../../controls';
 
@@ -199,12 +201,29 @@ const config: ControlPanelConfig = {
         ],
         [xAxisLabelRotation],
         [xAxisLabelInterval],
+        [
+          {
+            name: xAxisMinInterval.name,
+            config: {
+              ...xAxisMinInterval.config,
+              visibility: ({ controls }: ControlPanelsContainerProps) =>
+                checkColumnType(
+                  getColumnLabel(controls?.x_axis?.value as QueryFormColumn),
+                  controls?.datasource?.datasource,
+                  [GenericDataType.Temporal, GenericDataType.Numeric],
+                ),
+              disableStash: true,
+              resetOnHide: false,
+            },
+          },
+        ],
         [forceMaxInterval],
         ...richTooltipSection,
         // eslint-disable-next-line react/jsx-key
         [<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
         ['y_axis_format'],
         ['currency_format'],
+        [yAxisMinInterval],
         [
           {
             name: 'logAxis',
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
index e2d8c327b41..9afddc473d2 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
@@ -231,6 +231,19 @@ const visibleSymbols = [
   'pin',
 ] as const;
 
+/**
+ * Parses a user supplied minimum axis interval into a positive number.
+ * Returns undefined when the control is empty or not a valid number, so
+ * ECharts falls back to its automatic tick calculation.
+ */
+function parseMinInterval(
+  value: number | string | null | undefined,
+): number | undefined {
+  if (value === null || value === undefined || value === '') return undefined;
+  const parsed = Number(value);
+  return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
+}
+
 function getSymbolMarker(symbol: string, color: string) {
   const size = 10;
   switch (symbol) {
@@ -410,9 +423,11 @@ export default function transformProps(
     xAxisNumberFormat,
     xAxisTitle,
     xAxisTitleMargin,
+    xAxisMinInterval,
     yAxisBounds,
     yAxisFormat,
     currencyFormat,
+    yAxisMinInterval,
     yAxisTitle,
     yAxisTitleMargin,
     yAxisTitlePosition,
@@ -1519,6 +1534,9 @@ export default function transformProps(
     zoomable,
   );
 
+  const parsedXAxisMinInterval = parseMinInterval(xAxisMinInterval);
+  const parsedYAxisMinInterval = parseMinInterval(yAxisMinInterval);
+
   let xAxis: any = {
     type: xAxisType,
     name: xAxisTitle,
@@ -1535,11 +1553,12 @@ export default function transformProps(
     },
     ...(gridlines ? {} : { splitLine: { show: false } }),
     minInterval:
-      xAxisType === AxisType.Time && resolvedTimeGrain && !forceMaxInterval
+      parsedXAxisMinInterval ??
+      (xAxisType === AxisType.Time && resolvedTimeGrain && !forceMaxInterval
         ? (TIMEGRAIN_TO_TIMESTAMP[
             resolvedTimeGrain as keyof typeof TIMEGRAIN_TO_TIMESTAMP
           ] ?? 0)
-        : 0,
+        : 0),
     maxInterval:
       xAxisType === AxisType.Time && resolvedTimeGrain && forceMaxInterval
         ? TIMEGRAIN_TO_TIMESTAMP[
@@ -1575,6 +1594,9 @@ export default function transformProps(
     ...(yAxisSplitNumber !== undefined && { splitNumber: yAxisSplitNumber }),
     min: yAxisMin,
     max: yAxisMax,
+    ...(parsedYAxisMinInterval !== undefined && {
+      minInterval: parsedYAxisMinInterval,
+    }),
     minorTick: { show: isSmallChart ? false : minorTicks },
     minorSplitLine: { show: isSmallChart ? false : minorSplitLine },
     splitLine: { show: isSmallChart ? false : gridlines },
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
index e774f346cce..355c677022a 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
@@ -105,6 +105,8 @@ export type EchartsTimeseriesFormData = QueryFormData & {
   xAxisNumberFormat?: string;
   timeGrainSqla?: TimeGranularity;
   forceMaxInterval?: boolean;
+  xAxisMinInterval?: number | string | null;
+  yAxisMinInterval?: number | string | null;
   xAxisBounds: [number | undefined | null, number | undefined | null];
   yAxisBounds: [number | undefined | null, number | undefined | null];
   zoomable: boolean;
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx
index 5af3460bcfc..a36bb260a48 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx
@@ -476,6 +476,36 @@ export const forceMaxInterval = {
   },
 };
 
+export const xAxisMinInterval = {
+  name: 'x_axis_min_interval',
+  config: {
+    type: 'TextControl',
+    label: t('X Axis Minimum Interval'),
+    renderTrigger: true,
+    isFloat: true,
+    default: null,
+    description: t(
+      'Minimum gap between two axis ticks. Only applies to numeric and time ' +
+        'axes, where time is expressed in milliseconds. Leave empty for automatic.',
+    ),
+  },
+};
+
+export const yAxisMinInterval = {
+  name: 'y_axis_min_interval',
+  config: {
+    type: 'TextControl',
+    label: t('Y Axis Minimum Interval'),
+    renderTrigger: true,
+    isFloat: true,
+    default: null,
+    description: t(
+      'Minimum gap between two axis ticks. Useful to avoid fractional ticks ' +
+        'on integer metrics. Leave empty for automatic.',
+    ),
+  },
+};
+
 export const seriesOrderSection: ControlSetRow[] = [
   [<ControlSubSectionHeader>{t('Series Order')}</ControlSubSectionHeader>],
   [sortSeriesType],
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/controlPanel.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/controlPanel.test.ts
index f6f1b66fc0e..7f8381925f8 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/controlPanel.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/controlPanel.test.ts
@@ -390,3 +390,31 @@ test.each<[boolean, StackControlsValue | null, boolean]>([
     });
   },
 );
+
+const xMinIntervalControl: any = getControl('x_axis_min_interval');
+const yMinIntervalControl: any = getControl('y_axis_min_interval');
+
+test('should include the minimum interval controls for both axes', () => {
+  expect(xMinIntervalControl).toBeDefined();
+  expect(yMinIntervalControl).toBeDefined();
+  expect(xMinIntervalControl.config.default).toBeNull();
+  expect(yMinIntervalControl.config.default).toBeNull();
+  expect(xMinIntervalControl.config.renderTrigger).toBe(true);
+  expect(yMinIntervalControl.config.renderTrigger).toBe(true);
+});
+
+test('minimum interval controls follow the bar orientation', () => {
+  const xVisibility = xMinIntervalControl?.config?.visibility;
+  const yVisibility = yMinIntervalControl?.config?.visibility;
+  const vertical = mockBarControls('date', GenericDataType.Temporal);
+  const horizontal = mockBarControls(
+    'date',
+    GenericDataType.Temporal,
+    OrientationType.Horizontal,
+  );
+
+  expect(xVisibility(vertical)).toBe(true);
+  expect(xVisibility(horizontal)).toBe(false);
+  expect(yVisibility(vertical)).toBe(false);
+  expect(yVisibility(horizontal)).toBe(true);
+});
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Line/controlPanel.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Line/controlPanel.test.ts
index 4cd1edc73ec..06096710aee 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Line/controlPanel.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Line/controlPanel.test.ts
@@ -69,3 +69,45 @@ test('x_axis_number_format should be hidden for string columns', () => {
     false,
   );
 });
+
+test('should include the minimum interval controls for both axes', () => {
+  const xMinIntervalControl = getControl(config, 'x_axis_min_interval')!;
+  const yMinIntervalControl = getControl(config, 'y_axis_min_interval')!;
+
+  expect(xMinIntervalControl).toBeDefined();
+  expect(yMinIntervalControl).toBeDefined();
+  expect(xMinIntervalControl.config.default).toBeNull();
+  expect(yMinIntervalControl.config.default).toBeNull();
+  expect(xMinIntervalControl.config.renderTrigger).toBe(true);
+  expect(yMinIntervalControl.config.renderTrigger).toBe(true);
+});
+
+test('x_axis_min_interval should be visible for temporal columns', () => {
+  const visibilityFn = getControl(config, 'x_axis_min_interval')!.config
+    .visibility;
+  expect(visibilityFn(mockControls('date', GenericDataType.Temporal))).toBe(
+    true,
+  );
+});
+
+test('x_axis_min_interval should be visible for numeric columns', () => {
+  const visibilityFn = getControl(config, 'x_axis_min_interval')!.config
+    .visibility;
+  expect(visibilityFn(mockControls('year', GenericDataType.Numeric))).toBe(
+    true,
+  );
+});
+
+test('x_axis_min_interval should be hidden for string columns', () => {
+  const visibilityFn = getControl(config, 'x_axis_min_interval')!.config
+    .visibility;
+  expect(visibilityFn(mockControls('name', GenericDataType.String))).toBe(
+    false,
+  );
+});
+
+test('x_axis_min_interval should be hidden without an x-axis column', () => {
+  const visibilityFn = getControl(config, 'x_axis_min_interval')!.config
+    .visibility;
+  expect(visibilityFn(mockControls(null, null))).toBe(false);
+});
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/helpers.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/helpers.ts
index 2068df3f7c0..47039ed6c8a 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/helpers.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/helpers.ts
@@ -137,6 +137,7 @@ export interface TestControl {
     default?: unknown;
     options?: unknown;
     validators?: unknown;
+    renderTrigger?: boolean;
     visibility: (props: ControlPanelsContainerProps) => boolean;
   };
 }
diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
index cc33c411fc9..db531c26d55 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
@@ -4641,3 +4641,131 @@ test('tooltip keeps the metric format on a Difference time comparison', () => {
   expect(result).toContain('$ 100');
   expect(result).toContain('$ 25');
 });
+
+test('applies user-defined minimum interval to both axes', () => {
+  const queriesData: ChartDataResponseResult[] = [
+    createTestQueryData(
+      createTestData([{ 'Series A': 1 }, { 'Series A': 2 }], {
+        intervalMs: 300000000,
+      }),
+    ),
+  ];
+
+  const chartProps = createTestChartProps({
+    formData: {
+      ...baseFormDataHorizontalBar,
+      orientation: OrientationType.Vertical,
+      xAxisMinInterval: 86400000,
+      yAxisMinInterval: 1,
+    },
+    queriesData,
+  });
+
+  const { echartOptions } = transformProps(chartProps);
+  expect((echartOptions.xAxis as any).minInterval).toBe(86400000);
+  expect((echartOptions.yAxis as any).minInterval).toBe(1);
+});
+
+test('swaps the minimum interval of both axes for horizontal bar charts', () => {
+  const queriesData: ChartDataResponseResult[] = [
+    createTestQueryData(
+      createTestData([{ 'Series A': 1 }, { 'Series A': 2 }], {
+        intervalMs: 300000000,
+      }),
+    ),
+  ];
+
+  const chartProps = createTestChartProps({
+    formData: {
+      ...baseFormDataHorizontalBar,
+      xAxisMinInterval: 86400000,
+      yAxisMinInterval: 1,
+    },
+    queriesData,
+  });
+
+  const { echartOptions } = transformProps(chartProps);
+  expect((echartOptions.xAxis as any).minInterval).toBe(1);
+  expect((echartOptions.yAxis as any).minInterval).toBe(86400000);
+});
+
+test('ignores empty or invalid minimum interval values', () => {
+  const queriesData: ChartDataResponseResult[] = [
+    createTestQueryData(
+      createTestData([{ 'Series A': 1 }, { 'Series A': 2 }], {
+        intervalMs: 300000000,
+      }),
+    ),
+  ];
+
+  const chartProps = createTestChartProps({
+    formData: {
+      ...baseFormDataHorizontalBar,
+      orientation: OrientationType.Vertical,
+      xAxisMinInterval: '',
+      yAxisMinInterval: 'not a number',
+    },
+    queriesData,
+  });
+
+  const { echartOptions } = transformProps(chartProps);
+  expect((echartOptions.yAxis as any).minInterval).toBeUndefined();
+  expect((echartOptions.xAxis as any).minInterval).toBe(0);
+});
+
+test.each([
+  ['null', null],
+  ['undefined', undefined],
+  ['zero', 0],
+  ['a negative number', -1],
+  ['a non-finite number', Number.NaN],
+])('ignores %s as a minimum interval', (_label, value) => {
+  const queriesData: ChartDataResponseResult[] = [
+    createTestQueryData(
+      createTestData([{ 'Series A': 1 }, { 'Series A': 2 }], {
+        intervalMs: 300000000,
+      }),
+    ),
+  ];
+
+  const chartProps = createTestChartProps({
+    formData: {
+      ...baseFormDataHorizontalBar,
+      orientation: OrientationType.Vertical,
+      xAxisMinInterval: value,
+      yAxisMinInterval: value,
+    },
+    queriesData,
+  });
+
+  const { echartOptions } = transformProps(chartProps);
+  // The y-axis drops the property entirely, while the x-axis falls back to the
+  // time grain derived interval, which is 0 without a time grain.
+  expect((echartOptions.yAxis as any).minInterval).toBeUndefined();
+  expect((echartOptions.xAxis as any).minInterval).toBe(0);
+});
+
+test.each([
+  ['a numeric string', '86400000', 86400000],
+  ['a decimal value', 0.5, 0.5],
+])('accepts %s as a minimum interval', (_label, value, expected) => {
+  const queriesData: ChartDataResponseResult[] = [
+    createTestQueryData(
+      createTestData([{ 'Series A': 1 }, { 'Series A': 2 }], {
+        intervalMs: 300000000,
+      }),
+    ),
+  ];
+
+  const chartProps = createTestChartProps({
+    formData: {
+      ...baseFormDataHorizontalBar,
+      orientation: OrientationType.Vertical,
+      yAxisMinInterval: value,
+    },
+    queriesData,
+  });
+
+  const { echartOptions } = transformProps(chartProps);
+  expect((echartOptions.yAxis as any).minInterval).toBe(expected);
+});
diff --git a/superset/translations/ar/LC_MESSAGES/messages.po b/superset/translations/ar/LC_MESSAGES/messages.po
index 8b5995ea199..52d96c4b4bb 100644
--- a/superset/translations/ar/LC_MESSAGES/messages.po
+++ b/superset/translations/ar/LC_MESSAGES/messages.po
@@ -11216,6 +11216,9 @@ msgstr "الحد الأدنى"
 msgid "Minimum Font Size"
 msgstr "الحد الأدنى لحجم الخط"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "الحد الأدنى من الشعاع"
 
@@ -11229,6 +11232,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "يجب أن يكون الحد الأدنى أقل بشكل صارم من الحد الأقصى"
 
@@ -21450,6 +21463,9 @@ msgid "X Axis Label Interval"
 msgstr "ملصق المحور X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "تنسيق المحور X"
 
@@ -21497,6 +21513,9 @@ msgstr "تنسيق المحور Y"
 msgid "Y Axis Label"
 msgstr "ملصق المحور Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "عنوان المحور Y"
 
diff --git a/superset/translations/ca/LC_MESSAGES/messages.po b/superset/translations/ca/LC_MESSAGES/messages.po
index bf25d4ce9ed..7a32eb0d14a 100644
--- a/superset/translations/ca/LC_MESSAGES/messages.po
+++ b/superset/translations/ca/LC_MESSAGES/messages.po
@@ -10807,6 +10807,9 @@ msgstr "Mínim"
 msgid "Minimum Font Size"
 msgstr "Mida Mínima de Font"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Radi Mínim"
 
@@ -10817,6 +10820,16 @@ msgstr "Amplada Mínima"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "El mínim ha de ser estrictament menor que el màxim"
 
@@ -20852,6 +20865,9 @@ msgid "X Axis Label Interval"
 msgstr "Etiqueta de l'Eix X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Format de l'Eix X"
 
@@ -20898,6 +20914,9 @@ msgstr "Format de l'Eix Y"
 msgid "Y Axis Label"
 msgstr "Etiqueta de l'Eix Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Títol de l'Eix Y"
 
diff --git a/superset/translations/cs/LC_MESSAGES/messages.po b/superset/translations/cs/LC_MESSAGES/messages.po
index be725577db6..3d5b6485006 100644
--- a/superset/translations/cs/LC_MESSAGES/messages.po
+++ b/superset/translations/cs/LC_MESSAGES/messages.po
@@ -10433,6 +10433,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Minimální velikost písma"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimální poloměr"
 
@@ -10443,6 +10446,16 @@ msgstr "Minimální šířka"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimum musí být striktně menší než maximum"
 
@@ -20132,6 +20145,9 @@ msgid "X Axis Label Interval"
 msgstr "Interval popisků osy X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formát čísla na osu X"
 
@@ -20179,6 +20195,9 @@ msgstr "Formát osy Y"
 msgid "Y Axis Label"
 msgstr "Popisek osy Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Název osy Y"
 
diff --git a/superset/translations/de/LC_MESSAGES/messages.po b/superset/translations/de/LC_MESSAGES/messages.po
index 3e32192a98a..70ffa3dba38 100644
--- a/superset/translations/de/LC_MESSAGES/messages.po
+++ b/superset/translations/de/LC_MESSAGES/messages.po
@@ -10178,6 +10178,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Minimale Schriftgröße"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimaler Radius"
 
@@ -10187,6 +10190,16 @@ msgstr "Minimale Breite"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Der Mindestwert muss unbedingt kleiner sein als der Höchstwert"
 
@@ -19756,6 +19769,9 @@ msgstr "X Achsenbeschriftung"
 msgid "X Axis Label Interval"
 msgstr "x-Achsenbeschriftung Intervall"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "x-Achsen-Zahlenformat"
 
@@ -19802,6 +19818,9 @@ msgstr "y-Achsenformat"
 msgid "Y Axis Label"
 msgstr "Y Achsenbeschriftung"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Titel der y-Achse"
 
diff --git a/superset/translations/en/LC_MESSAGES/messages.po b/superset/translations/en/LC_MESSAGES/messages.po
index 10b96b3a481..dda606899f2 100644
--- a/superset/translations/en/LC_MESSAGES/messages.po
+++ b/superset/translations/en/LC_MESSAGES/messages.po
@@ -9485,6 +9485,9 @@ msgstr ""
 msgid "Minimum Font Size"
 msgstr ""
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr ""
 
@@ -9494,6 +9497,16 @@ msgstr ""
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr ""
 
@@ -18104,6 +18117,9 @@ msgstr ""
 msgid "X Axis Label Interval"
 msgstr ""
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr ""
 
@@ -18150,6 +18166,9 @@ msgstr ""
 msgid "Y Axis Label"
 msgstr ""
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr ""
 
diff --git a/superset/translations/es/LC_MESSAGES/messages.po b/superset/translations/es/LC_MESSAGES/messages.po
index e1b2522a8c9..c2835d1523e 100644
--- a/superset/translations/es/LC_MESSAGES/messages.po
+++ b/superset/translations/es/LC_MESSAGES/messages.po
@@ -10699,6 +10699,9 @@ msgstr "Mínimo"
 msgid "Minimum Font Size"
 msgstr "Tamaño mínimo de fuente"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Radio mínimo"
 
@@ -10709,6 +10712,16 @@ msgstr "Anchura mínima"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "El mínimo debe ser necesariamente menor que el máximo"
 
@@ -20729,6 +20742,9 @@ msgid "X Axis Label Interval"
 msgstr "Etiqueta del eje X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formato del eje X"
 
@@ -20775,6 +20791,9 @@ msgstr "Formato del eje Y"
 msgid "Y Axis Label"
 msgstr "Etiqueta del eje Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Nombre del eje Y"
 
diff --git a/superset/translations/fa/LC_MESSAGES/messages.po b/superset/translations/fa/LC_MESSAGES/messages.po
index a5040d6e9db..cd924dee015 100644
--- a/superset/translations/fa/LC_MESSAGES/messages.po
+++ b/superset/translations/fa/LC_MESSAGES/messages.po
@@ -10880,6 +10880,9 @@ msgstr "حداقل"
 msgid "Minimum Font Size"
 msgstr "اندازه حداقل قلم"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "حداقل شعاع"
 
@@ -10893,6 +10896,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "حداقل باید به‌طور دقیق کمتر از حداکثر باشد"
 
@@ -20938,6 +20951,9 @@ msgid "X Axis Label Interval"
 msgstr "برچسب محور X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "قالب محور X"
 
@@ -20985,6 +21001,9 @@ msgstr "قالب محور Y"
 msgid "Y Axis Label"
 msgstr "برچسب محور Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "عنوان محور Y"
 
diff --git a/superset/translations/fi/LC_MESSAGES/messages.po b/superset/translations/fi/LC_MESSAGES/messages.po
index 8ca69968eee..c5288219b68 100644
--- a/superset/translations/fi/LC_MESSAGES/messages.po
+++ b/superset/translations/fi/LC_MESSAGES/messages.po
@@ -16931,6 +16931,9 @@ msgstr "Pienin kirjasinkoko"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
 #, fuzzy
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Pienin säde"
 
@@ -16946,6 +16949,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
 # fr, ja, lv, mi, ru, sk, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimin on oltava ehdottomasti pienempi kuin maksimi"
 
@@ -32294,6 +32307,9 @@ msgstr "X-akselin nimikkeen väli"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
 # ru, uk]
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X-akselin numeromuoto"
 
@@ -32379,6 +32395,9 @@ msgstr "Y-akselin nimike"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
 #, fuzzy
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y-akselin otsikko"
 
diff --git a/superset/translations/fr/LC_MESSAGES/messages.po b/superset/translations/fr/LC_MESSAGES/messages.po
index ec14a366924..fc92e69e02e 100644
--- a/superset/translations/fr/LC_MESSAGES/messages.po
+++ b/superset/translations/fr/LC_MESSAGES/messages.po
@@ -10353,6 +10353,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Taille minimale de la police"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Rayon minimum"
 
@@ -10362,6 +10365,16 @@ msgstr "Largeur minimale"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Le minimum doit être strictement inférieur au maximum"
 
@@ -20118,6 +20131,9 @@ msgstr "Étiquette de l'axe X"
 msgid "X Axis Label Interval"
 msgstr "Intervalle d'étiquette de l'axe X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Format de nombre de l'axe X"
 
@@ -20164,6 +20180,9 @@ msgstr "Format de l'axe Y"
 msgid "Y Axis Label"
 msgstr "Étiquette de l'axe Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Titre de l'axe Y"
 
diff --git a/superset/translations/it/LC_MESSAGES/messages.po b/superset/translations/it/LC_MESSAGES/messages.po
index b7e93ffb09f..e5d00414443 100644
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@ -12810,6 +12810,9 @@ msgstr "Minimo"
 msgid "Minimum Font Size"
 msgstr "Dimensione Carattere Minima"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Raggio Minimo"
 
@@ -12819,6 +12822,16 @@ msgstr "Larghezza minima"
 msgid "Minimum dot size"
 msgstr "Dimensione minima del punto"
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Il minimo deve essere strettamente minore del massimo"
 
@@ -24860,6 +24873,9 @@ msgstr "Etichetta Asse X"
 msgid "X Axis Label Interval"
 msgstr "Intervallo etichetta asse X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formato numero asse X"
 
@@ -24920,6 +24936,9 @@ msgstr "Formato Asse Y"
 msgid "Y Axis Label"
 msgstr "Etichetta Asse Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Titolo Asse Y"
 
diff --git a/superset/translations/ja/LC_MESSAGES/messages.po b/superset/translations/ja/LC_MESSAGES/messages.po
index f4430d3fc65..52bc4654270 100644
--- a/superset/translations/ja/LC_MESSAGES/messages.po
+++ b/superset/translations/ja/LC_MESSAGES/messages.po
@@ -9510,6 +9510,9 @@ msgstr "最小"
 msgid "Minimum Font Size"
 msgstr "最小フォントサイズ"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "最小半径"
 
@@ -9519,6 +9522,16 @@ msgstr "最小幅"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "最小値は最大値より小さく設定してください"
 
@@ -18199,6 +18212,9 @@ msgstr "X軸ラベル"
 msgid "X Axis Label Interval"
 msgstr "X軸ラベルの間隔"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X軸の数値表示形式"
 
@@ -18245,6 +18261,9 @@ msgstr "Y軸の表示形式"
 msgid "Y Axis Label"
 msgstr "Y軸ラベル"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y軸のタイトル"
 
diff --git a/superset/translations/ko/LC_MESSAGES/messages.po b/superset/translations/ko/LC_MESSAGES/messages.po
index 6ef5eb22aad..639649e909c 100644
--- a/superset/translations/ko/LC_MESSAGES/messages.po
+++ b/superset/translations/ko/LC_MESSAGES/messages.po
@@ -15237,6 +15237,9 @@ msgstr "최소 글꼴 크기"
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
 # uk]
 #, fuzzy
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "최소 반지름"
 
@@ -15250,6 +15253,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "최솟값은 최댓값보다 반드시 작아야 합니다"
 
@@ -29386,6 +29399,9 @@ msgid "X Axis Label Interval"
 msgstr "새로고침 간격"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "D3 포멧"
 
@@ -29478,6 +29494,9 @@ msgstr "Y 축 레이블"
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr, uk,
 # zh, zh_TW]
 #, fuzzy
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y 축 제목"
 
diff --git a/superset/translations/lv/LC_MESSAGES/messages.po b/superset/translations/lv/LC_MESSAGES/messages.po
index 455f6e8398f..c4df7fc7203 100644
--- a/superset/translations/lv/LC_MESSAGES/messages.po
+++ b/superset/translations/lv/LC_MESSAGES/messages.po
@@ -10238,6 +10238,9 @@ msgstr "Minimums"
 msgid "Minimum Font Size"
 msgstr "Minimālais fonta lielums"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimālais rādiuss"
 
@@ -10248,6 +10251,16 @@ msgstr "Min platums"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimumam jābūt stingri mazākam par maksimumu"
 
@@ -19766,6 +19779,9 @@ msgstr "X ass apzīmējums"
 msgid "X Axis Label Interval"
 msgstr "X ass apzīmējuma intervāls"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X ass skaitļu formāts"
 
@@ -19812,6 +19828,9 @@ msgstr "Y ass formāts"
 msgid "Y Axis Label"
 msgstr "Y ass apzīmējums"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y ass virsraksts"
 
diff --git a/superset/translations/messages.pot b/superset/translations/messages.pot
index 406cedfbc5f..7b3e7ed7403 100644
--- a/superset/translations/messages.pot
+++ b/superset/translations/messages.pot
@@ -8998,6 +8998,9 @@ msgstr ""
 msgid "Minimum Font Size"
 msgstr ""
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr ""
 
@@ -9007,6 +9010,12 @@ msgstr ""
 msgid "Minimum dot size"
 msgstr ""
 
+msgid "Minimum gap between two axis ticks. Only applies to numeric and time axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid "Minimum gap between two axis ticks. Useful to avoid fractional ticks on integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr ""
 
@@ -16808,6 +16817,9 @@ msgstr ""
 msgid "X Axis Label Interval"
 msgstr ""
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr ""
 
@@ -16854,6 +16866,9 @@ msgstr ""
 msgid "Y Axis Label"
 msgstr ""
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr ""
 
diff --git a/superset/translations/mi/LC_MESSAGES/messages.po b/superset/translations/mi/LC_MESSAGES/messages.po
index a3b5996a0a8..4208297b951 100644
--- a/superset/translations/mi/LC_MESSAGES/messages.po
+++ b/superset/translations/mi/LC_MESSAGES/messages.po
@@ -10735,6 +10735,9 @@ msgstr "Iti"
 msgid "Minimum Font Size"
 msgstr "Rahi Momotuhi Iti"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Pūtoro Iti"
 
@@ -10745,6 +10748,16 @@ msgstr "Whānui Iti"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Me iti noa atu te iti i te rahi"
 
@@ -20739,6 +20752,9 @@ msgid "X Axis Label Interval"
 msgstr "Tapanga Tukutuku X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Hōputu Tukutuku X"
 
@@ -20785,6 +20801,9 @@ msgstr "Hōputu Tukutuku Y"
 msgid "Y Axis Label"
 msgstr "Tapanga Tukutuku Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Taitara Tukutuku Y"
 
diff --git a/superset/translations/nl/LC_MESSAGES/messages.po b/superset/translations/nl/LC_MESSAGES/messages.po
index e2cd861050b..f44e38e5b77 100644
--- a/superset/translations/nl/LC_MESSAGES/messages.po
+++ b/superset/translations/nl/LC_MESSAGES/messages.po
@@ -11115,6 +11115,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Minimale Lettergrootte"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimale Radius"
 
@@ -11128,6 +11131,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Het minimum moet strikt kleiner zijn dan het maximum"
 
@@ -21448,6 +21461,9 @@ msgid "X Axis Label Interval"
 msgstr "X-as Label"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X-as Opmaak"
 
@@ -21495,6 +21511,9 @@ msgstr "Y-as Opmaak"
 msgid "Y Axis Label"
 msgstr "Y-as Label"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y-as Titel"
 
diff --git a/superset/translations/pl/LC_MESSAGES/messages.po b/superset/translations/pl/LC_MESSAGES/messages.po
index c7bf504d494..fe04a188389 100644
--- a/superset/translations/pl/LC_MESSAGES/messages.po
+++ b/superset/translations/pl/LC_MESSAGES/messages.po
@@ -11263,6 +11263,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Minimalny rozmiar czcionki"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimalny promień"
 
@@ -11276,6 +11279,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimum musi być ściśle mniejsze niż maksimum"
 
@@ -21786,6 +21799,9 @@ msgid "X Axis Label Interval"
 msgstr "Etykieta osi X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Format osi X"
 
@@ -21838,6 +21854,9 @@ msgid "Y Axis Label"
 msgstr "Etykieta osi Y"
 
 #, fuzzy
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Tytuł osi Y"
 
diff --git a/superset/translations/pt/LC_MESSAGES/messages.po b/superset/translations/pt/LC_MESSAGES/messages.po
index 1024bfbdcbd..b34a91c9df9 100644
--- a/superset/translations/pt/LC_MESSAGES/messages.po
+++ b/superset/translations/pt/LC_MESSAGES/messages.po
@@ -13205,6 +13205,9 @@ msgstr "Tamanho Mínimo da Fonte"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
 # uk]
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Raio Mínimo"
 
@@ -13216,6 +13219,16 @@ msgstr ""
 
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "O mínimo deve ser estritamente menor que o máximo"
 
@@ -25610,6 +25623,9 @@ msgstr "Rótulo do Eixo X"
 msgid "X Axis Label Interval"
 msgstr "Intervalo de rótulo do eixo X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formato do número do eixo X"
 
@@ -25682,6 +25698,9 @@ msgstr "Rótulo do Eixo Y"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr, uk,
 # zh, zh_TW]
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Título do Eixo Y"
 
diff --git a/superset/translations/pt_BR/LC_MESSAGES/messages.po b/superset/translations/pt_BR/LC_MESSAGES/messages.po
index 3cc6f07939f..95d0af953c3 100644
--- a/superset/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/superset/translations/pt_BR/LC_MESSAGES/messages.po
@@ -11158,6 +11158,9 @@ msgstr "Mínimo"
 msgid "Minimum Font Size"
 msgstr "Tamanho Mínimo da Fonte"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Raio Mínimo"
 
@@ -11171,6 +11174,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "O mínimo deve ser estritamente menor que o máximo"
 
@@ -21565,6 +21578,9 @@ msgid "X Axis Label Interval"
 msgstr "Intervalo de rótulo do eixo X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formato do número do eixo X"
 
@@ -21612,6 +21628,9 @@ msgstr "Formato do eixo Y"
 msgid "Y Axis Label"
 msgstr "Rótulo do Eixo Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Título do Eixo Y"
 
diff --git a/superset/translations/ro/LC_MESSAGES/messages.po b/superset/translations/ro/LC_MESSAGES/messages.po
index 5bfcd433c17..19f92732a36 100644
--- a/superset/translations/ro/LC_MESSAGES/messages.po
+++ b/superset/translations/ro/LC_MESSAGES/messages.po
@@ -10932,6 +10932,9 @@ msgstr "Minim"
 msgid "Minimum Font Size"
 msgstr "Dimensiune Font Minimă"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Rază Minimă"
 
@@ -10944,6 +10947,16 @@ msgstr "Lățime minimă"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimul trebuie să fie strict mai mic decât maximul"
 
@@ -21049,6 +21062,9 @@ msgstr "Etichetă Axă X"
 msgid "X Axis Label Interval"
 msgstr "Interval Etichetă Axă X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Format Număr Axă X"
 
@@ -21095,6 +21111,9 @@ msgstr "Format Axă Y"
 msgid "Y Axis Label"
 msgstr "Etichetă Axă Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Titlu Axă Y"
 
diff --git a/superset/translations/ru/LC_MESSAGES/messages.po b/superset/translations/ru/LC_MESSAGES/messages.po
index e01343556a7..55f11991100 100644
--- a/superset/translations/ru/LC_MESSAGES/messages.po
+++ b/superset/translations/ru/LC_MESSAGES/messages.po
@@ -10085,6 +10085,9 @@ msgstr "Минимум"
 msgid "Minimum Font Size"
 msgstr "Минимальный размер шрифта"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Минимальный радиус"
 
@@ -10095,6 +10098,16 @@ msgstr "Минимальная ширина"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Минимальное значение должно быть строго меньше максимального"
 
@@ -19432,6 +19445,9 @@ msgstr "Метка оси X"
 msgid "X Axis Label Interval"
 msgstr "Интервал меток оси X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Числовой формат оси X"
 
@@ -19479,6 +19495,9 @@ msgstr "Формат Оси Y"
 msgid "Y Axis Label"
 msgstr "Метка оси Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Название оси Y"
 
diff --git a/superset/translations/sk/LC_MESSAGES/messages.po b/superset/translations/sk/LC_MESSAGES/messages.po
index 252f6a675f0..7c1d3b906cf 100644
--- a/superset/translations/sk/LC_MESSAGES/messages.po
+++ b/superset/translations/sk/LC_MESSAGES/messages.po
@@ -10440,6 +10440,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Minimální veľkosť písma"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimální polomer"
 
@@ -10450,6 +10453,16 @@ msgstr "Minimální šírka"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimum musí byť striktne menší než maximum"
 
@@ -20142,6 +20155,9 @@ msgid "X Axis Label Interval"
 msgstr "Interval popisků osy X"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Formát čísla na osu X"
 
@@ -20189,6 +20205,9 @@ msgstr "Formát osy Y"
 msgid "Y Axis Label"
 msgstr "Popisek osy Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Názov osy Y"
 
diff --git a/superset/translations/sl/LC_MESSAGES/messages.po b/superset/translations/sl/LC_MESSAGES/messages.po
index 7f6cf12a93a..fe5173d19be 100644
--- a/superset/translations/sl/LC_MESSAGES/messages.po
+++ b/superset/translations/sl/LC_MESSAGES/messages.po
@@ -10393,6 +10393,9 @@ msgstr "Minimum"
 msgid "Minimum Font Size"
 msgstr "Min. velikost pisave"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Min. polmer"
 
@@ -10404,6 +10407,16 @@ msgstr ""
 
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimum mora biti strogo manjši od maksimuma"
 
@@ -19992,6 +20005,9 @@ msgstr "Naslov X-osi"
 msgid "X Axis Label Interval"
 msgstr "Interval oznake osi X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Oblika številke osi X"
 
@@ -20038,6 +20054,9 @@ msgstr "Oblika Y-osi"
 msgid "Y Axis Label"
 msgstr "Naslov Y-osi"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Naslov Y-osi"
 
diff --git a/superset/translations/sr/LC_MESSAGES/messages.po b/superset/translations/sr/LC_MESSAGES/messages.po
index 552ab95d790..f1d1feb8f84 100644
--- a/superset/translations/sr/LC_MESSAGES/messages.po
+++ b/superset/translations/sr/LC_MESSAGES/messages.po
@@ -12400,6 +12400,9 @@ msgid "Minimum Font Size"
 msgstr "Минимална величина фонта"
 
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Минимални радијус"
 
@@ -12410,6 +12413,16 @@ msgid "Minimum dot size"
 msgstr ""
 
 # fr, ja, lv, mi, ru, sk, uk]
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Минимум мора бити строго мањи од максимума"
 
@@ -23731,6 +23744,9 @@ msgid "X Axis Label Interval"
 msgstr "Интервал ознака X осе"
 
 # ru, uk]
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Формат бројева X осе"
 
@@ -23791,6 +23807,9 @@ msgid "Y Axis Label"
 msgstr "Ознака Y осе"
 
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Наслов Y осе"
 
diff --git a/superset/translations/sr_Latn/LC_MESSAGES/messages.po b/superset/translations/sr_Latn/LC_MESSAGES/messages.po
index 5dbcd18c126..c3c61fd9202 100644
--- a/superset/translations/sr_Latn/LC_MESSAGES/messages.po
+++ b/superset/translations/sr_Latn/LC_MESSAGES/messages.po
@@ -12407,6 +12407,9 @@ msgid "Minimum Font Size"
 msgstr "Minimalna veličina fonta"
 
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Minimalni radijus"
 
@@ -12417,6 +12420,16 @@ msgid "Minimum dot size"
 msgstr ""
 
 # fr, ja, lv, mi, ru, sk, uk]
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Minimum mora biti strogo manji od maksimuma"
 
@@ -23749,6 +23762,9 @@ msgid "X Axis Label Interval"
 msgstr "Interval oznaka X ose"
 
 # ru, uk]
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Format brojeva X ose"
 
@@ -23809,6 +23825,9 @@ msgid "Y Axis Label"
 msgstr "Oznaka Y ose"
 
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Naslov Y ose"
 
diff --git a/superset/translations/ta/LC_MESSAGES/messages.po b/superset/translations/ta/LC_MESSAGES/messages.po
index 529b069f413..3e954028b65 100644
--- a/superset/translations/ta/LC_MESSAGES/messages.po
+++ b/superset/translations/ta/LC_MESSAGES/messages.po
@@ -10103,6 +10103,9 @@ msgstr "குறைந்தபட்சம்"
 msgid "Minimum Font Size"
 msgstr "குறைந்தபட்ச எழுத்துரு அளவு"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "குறைந்தபட்ச ஆரம்"
 
@@ -10113,6 +10116,16 @@ msgstr "குறைந்தபட்ச அகலம்"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "குறைந்தபட்சம் கண்டிப்பாக அதிகபட்சத்தை விட குறைவாக இருக்க வேண்டும்"
 
@@ -19204,6 +19217,9 @@ msgstr "X-அச்சு லேபிள்"
 msgid "X Axis Label Interval"
 msgstr "X-அச்சு லேபிள் இடைவெளி"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X-அச்சு எண் வடிவம்"
 
@@ -19250,6 +19266,9 @@ msgstr "Y-அச்சு வடிவம்"
 msgid "Y Axis Label"
 msgstr "Y-அச்சு லேபிள்"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y-அச்சு தலைப்பு"
 
diff --git a/superset/translations/th/LC_MESSAGES/messages.po b/superset/translations/th/LC_MESSAGES/messages.po
index 865bd2c5966..d1d95ab974b 100644
--- a/superset/translations/th/LC_MESSAGES/messages.po
+++ b/superset/translations/th/LC_MESSAGES/messages.po
@@ -16721,6 +16721,9 @@ msgstr "ขนาดฟอนต์ขั้นต่ำ"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
 #, fuzzy
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "รัศมีขั้นต่ำ"
 
@@ -16736,6 +16739,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
 # fr, ja, lv, mi, ru, sk, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "ค่าต่ำสุดต้องน้อยกว่าค่าสูงสุดอย่างเคร่งครัด"
 
@@ -31902,6 +31915,9 @@ msgstr "ช่วงป้ายกำกับแกน X"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
 # ru, uk]
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "รูปแบบตัวเลขแกน X"
 
@@ -31987,6 +32003,9 @@ msgstr "ป้ายกำกับแกน Y"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
 # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
 #, fuzzy
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "ชื่อแกน Y"
 
diff --git a/superset/translations/tr/LC_MESSAGES/messages.po b/superset/translations/tr/LC_MESSAGES/messages.po
index 864074f0e76..b8a49fd3de8 100644
--- a/superset/translations/tr/LC_MESSAGES/messages.po
+++ b/superset/translations/tr/LC_MESSAGES/messages.po
@@ -10687,6 +10687,9 @@ msgstr "Asgar"
 msgid "Minimum Font Size"
 msgstr "Minimum Font Boyut"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Asgari Radius"
 
@@ -10699,6 +10702,16 @@ msgstr "Minimum Genişlik"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Asgari maksimumdan daha az olmalıdır"
 
@@ -20576,6 +20589,9 @@ msgid "X Axis Label Interval"
 msgstr "X Axis Label Interval"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Zaman formatı"
 
@@ -20622,6 +20638,9 @@ msgstr "Y"
 msgid "Y Axis Label"
 msgstr "Y Axis Label"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y Axis Title"
 
diff --git a/superset/translations/uk/LC_MESSAGES/messages.po b/superset/translations/uk/LC_MESSAGES/messages.po
index fc5daa79629..2f98e4fbe14 100644
--- a/superset/translations/uk/LC_MESSAGES/messages.po
+++ b/superset/translations/uk/LC_MESSAGES/messages.po
@@ -10243,6 +10243,9 @@ msgstr "Мінімум"
 msgid "Minimum Font Size"
 msgstr "Найменший розмір шрифту"
 
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "Найменший радіус"
 
@@ -10253,6 +10256,16 @@ msgstr "Мінімальна ширина"
 msgid "Minimum dot size"
 msgstr ""
 
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "Мінімум не може бути більший за максимум"
 
@@ -19779,6 +19792,9 @@ msgstr "Мітка осі X"
 msgid "X Axis Label Interval"
 msgstr "Інтервал міток осі X"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "Формат чисел осі X"
 
@@ -19825,6 +19841,9 @@ msgstr "Формат осі Y"
 msgid "Y Axis Label"
 msgstr "Мітка осі Y"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Заголовок осі Y"
 
diff --git a/superset/translations/zh/LC_MESSAGES/messages.po b/superset/translations/zh/LC_MESSAGES/messages.po
index 95e78339100..b21e60a88b5 100644
--- a/superset/translations/zh/LC_MESSAGES/messages.po
+++ b/superset/translations/zh/LC_MESSAGES/messages.po
@@ -10572,6 +10572,9 @@ msgid "Minimum Font Size"
 msgstr "最小字体大小"
 
 #, fuzzy
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "最小半径"
 
@@ -10585,6 +10588,16 @@ msgstr "最小点大小"
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "最小值必须严格小于最大值"
 
@@ -20229,6 +20242,9 @@ msgstr "X 轴标签"
 msgid "X Axis Label Interval"
 msgstr "X 轴标签间隔"
 
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X 轴数字格式"
 
@@ -20277,6 +20293,9 @@ msgstr "Y 轴格式化"
 msgid "Y Axis Label"
 msgstr "Y 轴标签"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y 轴标题"
 
diff --git a/superset/translations/zh_TW/LC_MESSAGES/messages.po b/superset/translations/zh_TW/LC_MESSAGES/messages.po
index 8c703aa2f25..931ce8d3d21 100644
--- a/superset/translations/zh_TW/LC_MESSAGES/messages.po
+++ b/superset/translations/zh_TW/LC_MESSAGES/messages.po
@@ -11261,6 +11261,9 @@ msgid "Minimum Font Size"
 msgstr "最小字體大小"
 
 #, fuzzy
+msgid "Minimum Interval"
+msgstr ""
+
 msgid "Minimum Radius"
 msgstr "最小半徑"
 
@@ -11274,6 +11277,16 @@ msgstr ""
 # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
 # es, fr, ja, lv, mi, ro, ru, sk, sr, sr_Latn, tr, uk]
 #, fuzzy
+msgid ""
+"Minimum gap between two axis ticks. Only applies to numeric and time "
+"axes, where time is expressed in milliseconds. Leave empty for automatic."
+msgstr ""
+
+msgid ""
+"Minimum gap between two axis ticks. Useful to avoid fractional ticks on "
+"integer metrics. Leave empty for automatic."
+msgstr ""
+
 msgid "Minimum must be strictly less than maximum"
 msgstr "最小值必須嚴格小於最大值"
 
@@ -21537,6 +21550,9 @@ msgid "X Axis Label Interval"
 msgstr "X 軸標籤"
 
 #, fuzzy
+msgid "X Axis Minimum Interval"
+msgstr ""
+
 msgid "X Axis Number Format"
 msgstr "X 軸格式化"
 
@@ -21586,6 +21602,9 @@ msgstr "Y 軸格式化"
 msgid "Y Axis Label"
 msgstr "Y 軸標籤"
 
+msgid "Y Axis Minimum Interval"
+msgstr ""
+
 msgid "Y Axis Title"
 msgstr "Y 軸標題"