diff --git a/src/data/helper/dataStackHelper.ts b/src/data/helper/dataStackHelper.ts index deb3e3e918..ebe30e9b7a 100644 --- a/src/data/helper/dataStackHelper.ts +++ b/src/data/helper/dataStackHelper.ts @@ -102,6 +102,11 @@ export function enableDataStack( } if (mayStack && !dimensionInfo.isExtraCoord) { + //If a dimension is specified by user, use it as stack dimension + let stackDim = seriesModel && seriesModel.get('stackDim'); + if (dimensionInfo && stackDim === dimensionInfo.name) { + stackedDimInfo = dimensionInfo; + } // Find the first ordinal dimension as the stackedByDimInfo. if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { stackedByDimInfo = dimensionInfo; diff --git a/src/util/types.ts b/src/util/types.ts index dbaafc81b6..fb0c08d345 100644 --- a/src/util/types.ts +++ b/src/util/types.ts @@ -1660,7 +1660,8 @@ export interface SeriesLargeOptionMixin { largeThreshold?: number } export interface SeriesStackOptionMixin { - stack?: string + stack?: string, + stackDim?: string } type SamplingFunc = (frame: ArrayLike) => number; diff --git a/test/dataStackDimension.html b/test/dataStackDimension.html new file mode 100644 index 0000000000..9b3518125e --- /dev/null +++ b/test/dataStackDimension.html @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +