| 535 | self.label2.set_rotation_mode('anchor') |
| 536 | |
| 537 | def _determine_anchor(self, mode, angle, start): |
| 538 | # Note: angle is the (spine angle - 90) because it's used for the tick |
| 539 | # & text setup, so all numbers below are -90 from (normed) spine angle. |
| 540 | if mode == 'auto': |
| 541 | if start: |
| 542 | if -90 <= angle <= 90: |
| 543 | return 'left', 'center' |
| 544 | else: |
| 545 | return 'right', 'center' |
| 546 | else: |
| 547 | if -90 <= angle <= 90: |
| 548 | return 'right', 'center' |
| 549 | else: |
| 550 | return 'left', 'center' |
| 551 | else: |
| 552 | if start: |
| 553 | if angle < -68.5: |
| 554 | return 'center', 'top' |
| 555 | elif angle < -23.5: |
| 556 | return 'left', 'top' |
| 557 | elif angle < 22.5: |
| 558 | return 'left', 'center' |
| 559 | elif angle < 67.5: |
| 560 | return 'left', 'bottom' |
| 561 | elif angle < 112.5: |
| 562 | return 'center', 'bottom' |
| 563 | elif angle < 157.5: |
| 564 | return 'right', 'bottom' |
| 565 | elif angle < 202.5: |
| 566 | return 'right', 'center' |
| 567 | elif angle < 247.5: |
| 568 | return 'right', 'top' |
| 569 | else: |
| 570 | return 'center', 'top' |
| 571 | else: |
| 572 | if angle < -68.5: |
| 573 | return 'center', 'bottom' |
| 574 | elif angle < -23.5: |
| 575 | return 'right', 'bottom' |
| 576 | elif angle < 22.5: |
| 577 | return 'right', 'center' |
| 578 | elif angle < 67.5: |
| 579 | return 'right', 'top' |
| 580 | elif angle < 112.5: |
| 581 | return 'center', 'top' |
| 582 | elif angle < 157.5: |
| 583 | return 'left', 'top' |
| 584 | elif angle < 202.5: |
| 585 | return 'left', 'center' |
| 586 | elif angle < 247.5: |
| 587 | return 'left', 'bottom' |
| 588 | else: |
| 589 | return 'center', 'bottom' |
| 590 | |
| 591 | def update_position(self, loc): |
| 592 | super().update_position(loc) |