function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {
	        var axis = axisModel.axis;
	        var coord = axis.dataToCoord(value);
	        var axisAngle = polar.getAngleAxis().getExtent()[0];
	        axisAngle = axisAngle / 180 * Math.PI;
	        var radiusExtent = polar.getRadiusAxis().getExtent();
	        var position;
	        var align;
	        var verticalAlign;

	        if (axis.dim === 'radius') {
	            var transform = matrix.create();
	            matrix.rotate(transform, transform, axisAngle);
	            matrix.translate(transform, transform, [polar.cx, polar.cy]);
	            position = graphic.applyTransform([coord, -labelMargin], transform);

	            var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;
	            var labelLayout = AxisBuilder.innerTextLayout(
	                axisAngle, labelRotation * Math.PI / 180, -1
	            );
	            align = labelLayout.textAlign;
	            verticalAlign = labelLayout.textVerticalAlign;
	        }
	        else { // angle axis
	            var r = radiusExtent[1];
	            position = polar.coordToPoint([r + labelMargin, coord]);
	            var cx = polar.cx;
	            var cy = polar.cy;
	            align = Math.abs(position[0] - cx) / r < 0.3
	                ? 'center' : (position[0] > cx ? 'left' : 'right');
	            verticalAlign = Math.abs(position[1] - cy) / r < 0.3
	                ? 'middle' : (position[1] > cy ? 'top' : 'bottom');
	        }

	        return {
	            position: position,
	            align: align,
	            verticalAlign: verticalAlign
	        };
	    }
Calculate bar width and offset for radial bar charts