Mercurial > hg > octave-lyh
comparison scripts/plot/legend.m @ 16910:8a4e53cf79c9
Modify the plotbox position relative to the keybox position.
scripts/plot/legend.m: Position the plotbox relative to the keybox and account
for the tightinset.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Sat, 06 Jul 2013 12:25:21 -0400 |
parents | 8f9ed9d8a478 |
children | 9a316ec12b5f |
comparison
equal
deleted
inserted
replaced
16909:8f9ed9d8a478 | 16910:8a4e53cf79c9 |
---|---|
567 "unmodified_axes_outerposition"); | 567 "unmodified_axes_outerposition"); |
568 endif | 568 endif |
569 ca_pos = unmodified_axes_position; | 569 ca_pos = unmodified_axes_position; |
570 ca_outpos = unmodified_axes_outerposition; | 570 ca_outpos = unmodified_axes_outerposition; |
571 ca_fontsize = get (ca(1), "fontsize"); | 571 ca_fontsize = get (ca(1), "fontsize"); |
572 tightinset = get (ca(1), "tightinset"); | |
573 for i = 2 : numel (ca) | |
574 tightinset = max (tightinset, get (ca(i), "tightinset")); | |
575 endfor | |
572 unwind_protect_cleanup | 576 unwind_protect_cleanup |
573 set (ca(1), "units", units); | 577 set (ca(1), "units", units); |
574 set (ca(1), "fontunits", fontunits); | 578 set (ca(1), "fontunits", fontunits); |
575 end_unwind_protect | 579 end_unwind_protect |
576 | 580 |
699 gnuplot_offset = gnuplot_offset - 2 * fontsize; | 703 gnuplot_offset = gnuplot_offset - 2 * fontsize; |
700 else | 704 else |
701 gnuplot_offset = 0; | 705 gnuplot_offset = 0; |
702 endif | 706 endif |
703 | 707 |
708 ## For legend's outside the associated axes postion, align their edge | |
709 ## to the unmodified_axes_outerpostion, and adjust the axes postion | |
710 ## accordingly. | |
704 switch (location) | 711 switch (location) |
705 case "north" | 712 case "north" |
706 if (outside) | 713 if (outside) |
707 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... | 714 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... |
708 ca_outpos(2) + ca_outpos(4) - lpos(4) - ypad, lpos(3), ... | 715 ca_outpos(2) + ca_outpos(4) - lpos(4) - ypad, lpos(3), ... |
715 endif | 722 endif |
716 case "south" | 723 case "south" |
717 if (outside) | 724 if (outside) |
718 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... | 725 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... |
719 ca_outpos(2) + ypad, lpos(3), lpos(4)]; | 726 ca_outpos(2) + ypad, lpos(3), lpos(4)]; |
720 new_pos = [ca_pos(1), ca_pos(2) + lpos(4), ca_pos(3), ... | 727 new_pos = [ca_pos(1), lpos(2) + lpos(4) + 2 * ypad ... |
728 + tightinset(2), ca_pos(3), ... | |
721 ca_pos(4) - lpos(4)]; | 729 ca_pos(4) - lpos(4)]; |
722 else | 730 else |
723 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... | 731 lpos = [ca_pos(1) + (ca_pos(3) - lpos(3)) / 2, ... |
724 ca_pos(2) + ypad, lpos(3), lpos(4)]; | 732 ca_pos(2) + ypad, lpos(3), lpos(4)]; |
725 endif | 733 endif |
726 case "east" | 734 case "east" |
727 if (outside) | 735 if (outside) |
728 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... | 736 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... |
729 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; | 737 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; |
730 new_pos = [ca_pos(1), ca_pos(2), ca_pos(3) - lpos(3), ca_pos(4)]; | 738 new_pos = [ca_pos(1), ca_pos(2), ... |
739 lpos(1) - 2 * xpad - ca_pos(1) - tightinset(3), ... | |
740 ca_pos(4)]; | |
731 new_pos(3) = new_pos(3) + gnuplot_offset; | 741 new_pos(3) = new_pos(3) + gnuplot_offset; |
732 else | 742 else |
733 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... | 743 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... |
734 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; | 744 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; |
735 endif | 745 endif |
736 case "west" | 746 case "west" |
737 if (outside) | 747 if (outside) |
738 lpos = [ca_outpos(1) + ypad, ... | 748 lpos = [ca_outpos(1) + ypad, ... |
739 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, ... | 749 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, ... |
740 lpos(3), lpos(4)]; | 750 lpos(3), lpos(4)]; |
741 new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... | 751 new_pos = [lpos(1) + lpos(3) + 2 * xpad + tightinset(1), ... |
742 ca_pos(3) - lpos(3), ca_pos(4)]; | 752 ca_pos(2), ca_pos(3) - lpos(3) - 2 * xpad, ca_pos(4)]; |
743 new_pos(1) = new_pos(1) - gnuplot_offset; | 753 new_pos(1) = new_pos(1) - gnuplot_offset; |
744 new_pos(3) = new_pos(3) + gnuplot_offset; | 754 new_pos(3) = new_pos(3) + gnuplot_offset; |
745 else | 755 else |
746 lpos = [ca_pos(1) + ypad, ... | 756 lpos = [ca_pos(1) + ypad, ... |
747 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; | 757 ca_pos(2) + (ca_pos(4) - lpos(4)) / 2, lpos(3), lpos(4)]; |
748 endif | 758 endif |
749 case "northeast" | 759 case "northeast" |
750 if (outside) | 760 if (outside) |
751 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... | 761 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... |
752 ca_pos(2) + ca_pos(4) - lpos(4), lpos(3), lpos(4)]; | 762 ca_pos(2) + ca_pos(4) - lpos(4), lpos(3), lpos(4)]; |
753 new_pos = [ca_pos(1), ca_pos(2), ca_pos(3) - lpos(3), ca_pos(4)]; | 763 new_pos = [ca_pos(1), ca_pos(2), ... |
764 lpos(1) - 2 * xpad - tightinset(3) - ca_pos(1), ... | |
765 ca_pos(4)]; | |
754 new_pos(3) = new_pos(3) + gnuplot_offset; | 766 new_pos(3) = new_pos(3) + gnuplot_offset; |
755 else | 767 else |
756 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... | 768 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... |
757 ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; | 769 ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; |
758 endif | 770 endif |
759 case "northwest" | 771 case "northwest" |
760 if (outside) | 772 if (outside) |
761 lpos = [ca_outpos(1) + ypad , ca_pos(2) + ca_pos(4) - lpos(4), ... | 773 lpos = [ca_outpos(1) + ypad , ca_pos(2) + ca_pos(4) - lpos(4), ... |
762 lpos(3), lpos(4)]; | 774 lpos(3), lpos(4)]; |
763 new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... | 775 new_pos = [lpos(1) + lpos(3) + 2 * xpad + tightinset(1), ... |
764 ca_pos(3) - lpos(3), ca_pos(4)]; | 776 ca_pos(2), ca_pos(3) - lpos(3) - 2 * xpad, ca_pos(4)]; |
765 new_pos(1) = new_pos(1) - gnuplot_offset; | 777 new_pos(1) = new_pos(1) - gnuplot_offset; |
766 new_pos(3) = new_pos(3) + gnuplot_offset; | 778 new_pos(3) = new_pos(3) + gnuplot_offset; |
767 else | 779 else |
768 lpos = [ca_pos(1) + ypad, ... | 780 lpos = [ca_pos(1) + ypad, ... |
769 ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; | 781 ca_pos(2) + ca_pos(4) - lpos(4) - ypad, lpos(3), lpos(4)]; |
771 case "southeast" | 783 case "southeast" |
772 if (outside) | 784 if (outside) |
773 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... | 785 lpos = [ca_outpos(1) + ca_outpos(3) - lpos(3) - ypad, ... |
774 ca_pos(2), lpos(3), lpos(4)]; | 786 ca_pos(2), lpos(3), lpos(4)]; |
775 new_pos = [ca_pos(1), ca_pos(2), ... | 787 new_pos = [ca_pos(1), ca_pos(2), ... |
776 ca_pos(3) - lpos(3), ca_pos(4)]; | 788 lpos(1) - 2 * xpad - ca_pos(1) - tightinset(3), ... |
789 ca_pos(4)]; | |
777 new_pos(3) = new_pos(3) + gnuplot_offset; | 790 new_pos(3) = new_pos(3) + gnuplot_offset; |
778 else | 791 else |
779 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... | 792 lpos = [ca_pos(1) + ca_pos(3) - lpos(3) - ypad, ... |
780 ca_pos(2) + ypad, lpos(3), lpos(4)]; | 793 ca_pos(2) + ypad, lpos(3), lpos(4)]; |
781 endif | 794 endif |
782 case "southwest" | 795 case "southwest" |
783 if (outside) | 796 if (outside) |
784 lpos = [ca_outpos(1) + ypad, ca_pos(2), lpos(3), lpos(4)]; | 797 lpos = [ca_outpos(1) + ypad, ca_pos(2), lpos(3), lpos(4)]; |
785 new_pos = [ca_pos(1) + lpos(3), ca_pos(2), ... | 798 new_pos = [lpos(1) + lpos(3) + 2 * xpad + tightinset(1), ... |
786 ca_pos(3) - lpos(3), ca_pos(4)]; | 799 ca_pos(2), ca_pos(3) - lpos(3) - 2 * xpad, ca_pos(4)]; |
787 new_pos(1) = new_pos(1) - gnuplot_offset; | 800 new_pos(1) = new_pos(1) - gnuplot_offset; |
788 new_pos(3) = new_pos(3) + gnuplot_offset; | 801 new_pos(3) = new_pos(3) + gnuplot_offset; |
789 else | 802 else |
790 lpos = [ca_pos(1) + ypad, ca_pos(2) + ypad, lpos(3), lpos(4)]; | 803 lpos = [ca_pos(1) + ypad, ca_pos(2) + ypad, lpos(3), lpos(4)]; |
791 endif | 804 endif |
961 addlistener (hlegend, "interpreter", @updatelegendtext); | 974 addlistener (hlegend, "interpreter", @updatelegendtext); |
962 addlistener (hlegend, "location", @updatelegend); | 975 addlistener (hlegend, "location", @updatelegend); |
963 addlistener (hlegend, "orientation", @updatelegend); | 976 addlistener (hlegend, "orientation", @updatelegend); |
964 addlistener (hlegend, "string", @updatelegend); | 977 addlistener (hlegend, "string", @updatelegend); |
965 addlistener (hlegend, "textposition", @updatelegend); | 978 addlistener (hlegend, "textposition", @updatelegend); |
979 ## TODO - need to add listeners for tighinset and position | |
980 ## addlistener (ca, "tightinset", @update????); | |
981 ## addlistener (ca, "position", @update????); | |
966 endif | 982 endif |
967 unwind_protect_cleanup | 983 unwind_protect_cleanup |
968 set (fig, "currentaxes", curaxes); | 984 set (fig, "currentaxes", curaxes); |
969 end_unwind_protect | 985 end_unwind_protect |
970 endif | 986 endif |