Skip to content

Commit c92fb21

Browse files
committed
improve angularaxis tick label positioning
1 parent 134a7a2 commit c92fb21

File tree

1 file changed

+9
-34
lines changed

1 file changed

+9
-34
lines changed

src/plots/polar/polar.js

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -556,36 +556,25 @@ proto.updateAngularAxis = function(fullLayout, polarLayout) {
556556

557557
var out = Axes.makeLabelFns(ax, 0);
558558
var labelStandoff = out.labelStandoff;
559-
var labelShift = out.labelShift;
560-
var offset4fontsize = (angularLayout.ticks !== 'outside' ? 0.7 : 0.5);
561-
var pad = (ax.linewidth || 1) / 2;
562559

563560
var labelXFn = function(d) {
564561
var rad = t2g(d);
565-
566-
var offset4tx = signSin(rad) === 0 ?
567-
0 :
568-
Math.cos(rad) * (labelStandoff + pad + offset4fontsize * d.fontSize);
569-
var offset4tick = signCos(rad) * (d.dx + labelStandoff + pad);
570-
571-
return offset4tx + offset4tick;
562+
return Math.cos(rad) * labelStandoff;
572563
};
573564

574565
var labelYFn = function(d) {
575566
var rad = t2g(d);
576-
577-
var offset4tx = d.dy + d.fontSize * MID_SHIFT - labelShift;
578-
var offset4tick = -Math.sin(rad) * (labelStandoff + pad + offset4fontsize * d.fontSize);
579-
580-
return offset4tx + offset4tick;
567+
var ff = Math.sin(rad) > 0 ? 0.2 : 1;
568+
return -Math.sin(rad) * (labelStandoff + d.fontSize * ff) +
569+
Math.abs(Math.cos(rad)) * (d.fontSize * MID_SHIFT);
581570
};
582571

583-
// TODO maybe switch angle, d ordering ??
584572
var labelAnchorFn = function(angle, d) {
585573
var rad = t2g(d);
586-
return signSin(rad) === 0 ?
587-
(signCos(rad) > 0 ? 'start' : 'end') :
588-
'middle';
574+
var cos = Math.cos(rad);
575+
return Math.abs(cos) < 0.1 ?
576+
'middle' :
577+
(cos > 0 ? 'start' : 'end');
589578
};
590579

591580
var newTickLayout = strTickLayout(angularLayout);
@@ -623,6 +612,7 @@ proto.updateAngularAxis = function(fullLayout, polarLayout) {
623612

624613
if(ax.visible) {
625614
var tickSign = ax.ticks === 'inside' ? -1 : 1;
615+
var pad = (ax.linewidth || 1) / 2;
626616

627617
Axes.drawTicks(gd, ax, {
628618
vals: vals,
@@ -1413,18 +1403,3 @@ function strTranslate(x, y) {
14131403
function strRotate(angle) {
14141404
return 'rotate(' + angle + ')';
14151405
}
1416-
1417-
// because Math.sign(Math.cos(Math.PI / 2)) === 1
1418-
// oh javascript ;)
1419-
function sign(v) {
1420-
return Math.abs(v) < 1e-10 ? 0 :
1421-
v > 0 ? 1 : -1;
1422-
}
1423-
1424-
function signCos(v) {
1425-
return sign(Math.cos(v));
1426-
}
1427-
1428-
function signSin(v) {
1429-
return sign(Math.sin(v));
1430-
}

0 commit comments

Comments
 (0)