Polar chart - p
author(s): Torstein Hønsi
by KSK Kushwah
HTML
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<div id="container"></div>
JavaScript
(function(H) {
H.Series.prototype.getConnectors = function(segment, index, calculateNeighbours, connectEnds) {
var i,
prevPointInd,
nextPointInd,
previousPoint,
nextPoint,
previousX,
previousY,
nextX,
nextY,
plotX,
plotY,
ret,
// 1 means control points midway between points, 2 means 1/3 from
// the point, 3 is 1/4 etc;
smoothing = 10,
denom = smoothing + 1,
leftContX, leftContY, rightContX, rightContY, dLControlPoint, // distance left control point
dRControlPoint, leftContAngle, rightContAngle, jointAngle, addedNumber = connectEnds ? 1 : 0;
// Calculate final index of points depending on the initial index value.
// Because of calculating neighbours, index may be outisde segment
// array.
if (index >= 0 && index <= segment.length - 1) {
i = index;
} else if (index < 0) {
i = segment.length - 1 + index;
} else {
i = 0;
}
prevPointInd = (i - 1 < 0) ? segment.length - (1 + addedNumber) : i - 1;
nextPointInd = (i + 1 > segment.length - 1) ? addedNumber : i + 1;
previousPoint = segment[prevPointInd];
nextPoint = segment[nextPointInd];
previousX = previousPoint.plotX;
previousY = previousPoint.plotY;
nextX = nextPoint.plotX;
nextY = nextPoint.plotY;
plotX = segment[i].plotX; // actual point
plotY = segment[i].plotY;
leftContX = (smoothing * plotX + previousX) / denom;
leftContY = (smoothing * plotY + previousY) / denom;
rightContX = (smoothing * plotX + nextX) / denom;
rightContY = (smoothing * plotY + nextY) / denom;
dLControlPoint = Math.sqrt(Math.pow(leftContX - plotX, 2) + Math.pow(leftContY - plotY, 2));
dRControlPoint = Math.sqrt(Math.pow(rightContX - plotX, 2) + Math.pow(rightContY - plotY, 2));
leftContAngle = Math.atan2(leftContY - plotY, leftContX - plotX);
rightContAngle = Math.atan2(rightContY - plotY, rightContX - plotX);
...