diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java
index 992d1ca991..fb8b8cb805 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java
@@ -65,7 +65,8 @@ public class StackBarHandler extends BarHandler {
         var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
         var extStack = formatResult.getAxisMap().get(ChartAxis.extStack);
         var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
-        var xAxisBase = xAxis.subList(0, xAxis.size() - extStack.size());
-        return ChartDataBuild.transStackChartDataAntV(xAxisBase, yAxis, view, data, extStack, isDrill);
+        var drillAxis = xAxis.stream().filter(axis -> FieldSource.DRILL == axis.getSource()).toList();
+        var xAxisBase = xAxis.subList(0, xAxis.size() - extStack.size() - drillAxis.size());
+        return ChartDataBuild.transStackChartDataAntV(xAxisBase, xAxis, yAxis, view, data, extStack, isDrill);
     }
 }
diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java
index e1e7179b76..78e3fc04d7 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java
@@ -31,7 +31,6 @@ public class StackGroupBarHandler extends BarHandler {
         var xAxis = result.getAxisMap().get(ChartAxis.xAxis);
         xAxis.addAll(view.getXAxisExt());
         xAxis.addAll(view.getExtStack());
-        result.getAxisMap().put(ChartAxis.xAxisExt, view.getExtStack());
         result.getAxisMap().put(ChartAxis.extStack, view.getExtStack());
         result.getAxisMap().put(ChartAxis.xAxisExt, view.getXAxisExt());
         return result;
@@ -82,8 +81,8 @@ public class StackGroupBarHandler extends BarHandler {
         var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
         var extStack = formatResult.getAxisMap().get(ChartAxis.extStack);
         var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
-        var xAxisBase = xAxis.subList(0, xAxis.size() - xAxisExt.size() - extStack.size());
-        var xAxisMain = xAxis.subList(0, xAxis.size() - extStack.size());
-        return ChartDataBuild.transGroupStackDataAntV(xAxisBase, xAxisMain, xAxisExt, yAxis, extStack, data, view, isDrill);
+        var drillAxis = xAxis.stream().filter(axis -> FieldSource.DRILL == axis.getSource()).toList();
+        var xAxisBase = xAxis.subList(0, xAxis.size() - xAxisExt.size() - extStack.size() - drillAxis.size());
+        return ChartDataBuild.transGroupStackDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, extStack, data, view, isDrill);
     }
 }
diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java
index d7f4c8ed69..598c5f570c 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java
@@ -46,9 +46,10 @@ public class StackAreaHandler extends YoyChartHandler {
                 .anyMatch(ele -> ele.getFilterType() == 1);
         var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
         var extStack = formatResult.getAxisMap().get(ChartAxis.extStack);
-        var axisBase = xAxis.subList(0, xAxis.size() - extStack.size());
         var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
-        return ChartDataBuild.transStackChartDataAntV(axisBase, yAxis, view, data, extStack, isDrill);
+        var drillAxis = xAxis.stream().filter(axis -> FieldSource.DRILL == axis.getSource()).toList();
+        var xAxisBase = xAxis.subList(0, xAxis.size() - extStack.size() - drillAxis.size());
+        return ChartDataBuild.transStackChartDataAntV(xAxisBase, xAxis, yAxis, view, data, extStack, isDrill);
     }
 
     @Override
diff --git a/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java b/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java
index 28698d4652..6e7eeb0b51 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java
@@ -265,7 +265,7 @@ public class ChartDataBuild {
     }
 
     // AntV柱状堆叠图
-    public static Map<String, Object> transStackChartDataAntV(List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, ChartViewDTO view, List<String[]> data, List<ChartViewFieldDTO> extStack, boolean isDrill) {
+    public static Map<String, Object> transStackChartDataAntV(List<ChartViewFieldDTO> xAxisBase, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, ChartViewDTO view, List<String[]> data, List<ChartViewFieldDTO> extStack, boolean isDrill) {
         Map<String, Object> map = new HashMap<>();
 
         List<AxisChartDataAntVDTO> dataList = new ArrayList<>();
@@ -279,8 +279,8 @@ public class ChartDataBuild {
                 if (isDrill) {
                     a.append(row[xAxis.size() - 1]);
                 } else {
-                    for (int i = 0; i < xAxis.size(); i++) {
-                        if (i == xAxis.size() - 1) {
+                    for (int i = 0; i < xAxisBase.size(); i++) {
+                        if (i == xAxisBase.size() - 1) {
                             a.append(row[i]);
                         } else {
                             a.append(row[i]).append("\n");
@@ -289,7 +289,7 @@ public class ChartDataBuild {
                 }
                 axisChartDataDTO.setField(a.toString());
                 axisChartDataDTO.setName(a.toString());
-                axisChartDataDTO.setCategory(row[xAxis.size()]);
+                axisChartDataDTO.setCategory(row[xAxisBase.size()]);
 
                 List<ChartDimensionDTO> dimensionList = new ArrayList<>();
                 List<ChartQuotaDTO> quotaList = new ArrayList<>();
@@ -300,18 +300,10 @@ public class ChartDataBuild {
                     chartDimensionDTO.setValue(row[k]);
                     dimensionList.add(chartDimensionDTO);
                 }
-                ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO();
-                chartDimensionDTO.setId(extStack.get(0).getId());
-                chartDimensionDTO.setValue(row[xAxis.size()]);
-                dimensionList.add(chartDimensionDTO);
                 axisChartDataDTO.setDimensionList(dimensionList);
 
-                // yAxis最后的数据对应extLabel和extTooltip,将他们从yAxis中去掉,同时转换成动态值
-                int size = xAxis.size() + extStack.size() + yAxis.size();
-                int extSize = view.getExtLabel().size() + view.getExtTooltip().size();
-
                 if (ObjectUtils.isNotEmpty(yAxis)) {
-                    int valueIndex = xAxis.size() + extStack.size();
+                    int valueIndex = xAxis.size();
                     ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO();
                     chartQuotaDTO.setId(yAxis.get(0).getId());
                     quotaList.add(chartQuotaDTO);
@@ -321,7 +313,6 @@ public class ChartDataBuild {
                     } catch (Exception e) {
                         axisChartDataDTO.setValue(new BigDecimal(0));
                     }
-                    buildDynamicValue(view, axisChartDataDTO, row, size, extSize);
                 } else {
                     axisChartDataDTO.setQuotaList(quotaList);
                     axisChartDataDTO.setValue(new BigDecimal(0));
@@ -345,11 +336,7 @@ public class ChartDataBuild {
                     }
                 }
 
-                // yAxis最后的数据对应extLabel和extTooltip,将他们从yAxis中去掉,同时转换成动态值
-                int size = xAxis.size() + yAxis.size();
-                int extSize = view.getExtLabel().size() + view.getExtTooltip().size();
-
-                for (int i = xAxis.size(); i < size - extSize; i++) {
+                for (int i = xAxis.size(); i < xAxis.size() + yAxis.size(); i++) {
                     AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO();
                     axisChartDataDTO.setField(a.toString());
                     axisChartDataDTO.setName(a.toString());
@@ -376,7 +363,6 @@ public class ChartDataBuild {
                         axisChartDataDTO.setValue(new BigDecimal(0));
                     }
                     axisChartDataDTO.setCategory(StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName()));
-                    buildDynamicValue(view, axisChartDataDTO, row, size, extSize);
                     dataList.add(axisChartDataDTO);
                 }
             }
@@ -1335,7 +1321,7 @@ public class ChartDataBuild {
     public static Map<String, Object> transGroupStackDataAntV(List<ChartViewFieldDTO> xAxisBase, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> xAxisExt, List<ChartViewFieldDTO> yAxis, List<ChartViewFieldDTO> extStack, List<String[]> data, ChartViewDTO view, boolean isDrill) {
         // 堆叠柱状图
         if (ObjectUtils.isEmpty(xAxisExt)) {
-            return transStackChartDataAntV(xAxis, yAxis, view, data, extStack, isDrill);
+            return transStackChartDataAntV(xAxisBase, xAxis, yAxis, view, data, extStack, isDrill);
             //  分组柱状图
         } else if (ObjectUtils.isNotEmpty(xAxisExt) && ObjectUtils.isEmpty(extStack)) {
             return transBaseGroupDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill);
@@ -1370,8 +1356,8 @@ public class ChartDataBuild {
                 }
 
                 StringBuilder stackField = new StringBuilder();
-                for (int i = xAxis.size(); i < xAxis.size() + extStack.size(); i++) {
-                    if (i == xAxis.size() + extStack.size() - 1) {
+                for (int i = xAxisBase.size() + xAxisExt.size(); i < xAxisBase.size() + xAxisExt.size() + extStack.size(); i++) {
+                    if (i == xAxisBase.size() + xAxisExt.size() + extStack.size() - 1) {
                         stackField.append(row[i]);
                     } else {
                         stackField.append(row[i]).append("\n");
@@ -1398,7 +1384,7 @@ public class ChartDataBuild {
                 axisChartDataDTO.setDimensionList(dimensionList);
 
                 if (ObjectUtils.isNotEmpty(yAxis)) {
-                    int valueIndex = xAxis.size() + extStack.size();
+                    int valueIndex = xAxis.size();
                     ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO();
                     chartQuotaDTO.setId(yAxis.get(0).getId());
                     quotaList.add(chartQuotaDTO);