diff --git a/src/component/axis/AngleAxisView.ts b/src/component/axis/AngleAxisView.ts index 6ce8da8f2b..23f018a50a 100644 --- a/src/component/axis/AngleAxisView.ts +++ b/src/component/axis/AngleAxisView.ts @@ -138,18 +138,25 @@ const angelAxisElementsBuilders: Record= 0 - r: Math.max(ticksCoords[i].coord, 0) + r: Math.max(ticksCoords[i].coord, 0), + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse } })); } diff --git a/src/coord/polar/AxisModel.ts b/src/coord/polar/AxisModel.ts index af2414a673..40adf4adf3 100644 --- a/src/coord/polar/AxisModel.ts +++ b/src/coord/polar/AxisModel.ts @@ -39,6 +39,7 @@ export type AngleAxisOption = AxisBaseOption & { polarId?: string; startAngle?: number; + endAngle?: number; clockwise?: boolean; axisLabel?: AxisBaseOption['axisLabel'] diff --git a/src/coord/polar/polarCreator.ts b/src/coord/polar/polarCreator.ts index 4df310c1d4..fe29f3ed18 100644 --- a/src/coord/polar/polarCreator.ts +++ b/src/coord/polar/polarCreator.ts @@ -124,7 +124,8 @@ function setAxis(axis: RadiusAxis | AngleAxis, axisModel: PolarAxisModel) { if (isAngleAxisModel(axisModel)) { axis.inverse = axis.inverse !== axisModel.get('clockwise'); const startAngle = axisModel.get('startAngle'); - axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360)); + const endAngle = axisModel.get('endAngle') ?? (startAngle + (axis.inverse ? -360 : 360)); + axis.setExtent(startAngle, endAngle); } // Inject axis instance diff --git a/test/polar-end-angle.html b/test/polar-end-angle.html new file mode 100644 index 0000000000..3f9849ac19 --- /dev/null +++ b/test/polar-end-angle.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + +

polar with end angle

+
+ + +