@@ -584,48 +584,48 @@ def get_subplotspec(self):
584
584
585
585
586
586
# Helper for HBoxDivider/VBoxDivider.
587
- def _determine_karray (equivalent_sizes , appended_sizes ,
588
- max_equivalent_size , total_appended_size ):
589
- n = len (equivalent_sizes )
590
- eq_rs , eq_as = np .asarray (equivalent_sizes ).T
591
- ap_rs , ap_as = np .asarray (appended_sizes ).T
587
+ # The variable names are written for a horizontal layout, but the calculations
588
+ # work identically for vertical layouts (and likewise for the helpers below).
589
+ def _determine_karray (summed_widths , equal_heights , total_width , max_height ):
590
+ n = len (equal_heights )
591
+ eq_rs , eq_as = np .asarray (equal_heights ).T
592
+ sm_rs , sm_as = np .asarray (summed_widths ).T
592
593
A = np .zeros ((n + 1 , n + 1 ))
593
594
B = np .zeros (n + 1 )
594
595
np .fill_diagonal (A [:n , :n ], eq_rs )
595
596
A [:n , - 1 ] = - 1
596
- A [- 1 , :- 1 ] = ap_rs
597
+ A [- 1 , :- 1 ] = sm_rs
597
598
B [:n ] = - eq_as
598
- B [- 1 ] = total_appended_size - sum (ap_as )
599
+ B [- 1 ] = total_width - sum (sm_as )
599
600
# A @ K = B: This solves for {k_0, ..., k_{N-1}, H} so that
600
601
# eq_r_i * k_i + eq_a_i = H for all i: all axes have the same height
601
- # sum(ap_r_i * k_i + ap_a_i ) = total_summed_width: fixed total width
602
+ # sum(sm_r_i * k_i + sm_a_i ) = total_summed_width: fixed total width
602
603
# (foo_r_i * k_i + foo_a_i will end up being the size of foo.)
603
- karray_H = np .linalg .solve (A , B )
604
- karray = karray_H [:- 1 ]
605
- H = karray_H [- 1 ]
606
- if H > max_equivalent_size : # Additionally, upper-bound the height.
607
- karray = (max_equivalent_size - eq_as ) / eq_rs
604
+ karray_and_height = np .linalg .solve (A , B )
605
+ karray = karray_and_height [:- 1 ]
606
+ height = karray_and_height [- 1 ]
607
+ if height > max_height : # Additionally, upper-bound the height.
608
+ karray = (max_height - eq_as ) / eq_rs
608
609
return karray
609
610
610
611
611
- # Helper for HBoxDivider/VBoxDivider.
612
- def _calc_offsets (appended_sizes , karray ):
612
+ # Helper for HBoxDivider/VBoxDivider (see above re: variable naming) .
613
+ def _calc_offsets (summed_sizes , karray ):
613
614
offsets = [0. ]
614
- for (r , a ), k in zip (appended_sizes , karray ):
615
+ for (r , a ), k in zip (summed_sizes , karray ):
615
616
offsets .append (offsets [- 1 ] + r * k + a )
616
617
return offsets
617
618
618
619
619
- # Helper for HBoxDivider/VBoxDivider.
620
- def _locate (
621
- x , y , w , h , equivalent_sizes , appended_sizes , fig_w , fig_h , anchor ):
620
+ # Helper for HBoxDivider/VBoxDivider (see above re: variable naming).
621
+ def _locate (x , y , w , h , summed_widths , equal_heights , fig_w , fig_h , anchor ):
622
622
karray = _determine_karray (
623
- equivalent_sizes , appended_sizes ,
624
- max_equivalent_size = fig_h * h , total_appended_size = fig_w * w )
625
- ox = _calc_offsets (appended_sizes , karray )
623
+ summed_widths , equal_heights ,
624
+ total_width = fig_w * w , max_height = fig_h * h )
625
+ ox = _calc_offsets (summed_widths , karray )
626
626
627
627
ww = (ox [- 1 ] - ox [0 ]) / fig_w
628
- h0_r , h0_a = equivalent_sizes [0 ]
628
+ h0_r , h0_a = equal_heights [0 ]
629
629
hh = (karray [0 ]* h0_r + h0_a ) / fig_h
630
630
pb = mtransforms .Bbox .from_bounds (x , y , w , h )
631
631
pb1 = mtransforms .Bbox .from_bounds (x , y , ww , hh )
@@ -661,16 +661,15 @@ def new_locator(self, nx, nx1=None):
661
661
662
662
def locate (self , nx , ny , nx1 = None , ny1 = None , axes = None , renderer = None ):
663
663
# docstring inherited
664
- figW , figH = self ._fig .get_size_inches ()
664
+ fig_w , fig_h = self ._fig .get_size_inches ()
665
665
x , y , w , h = self .get_position_runtime (axes , renderer )
666
- y_equivalent_sizes = self .get_vertical_sizes (renderer )
667
- x_appended_sizes = self .get_horizontal_sizes (renderer )
668
- x0 , y0 , ox , hh = _locate (x , y , w , h ,
669
- y_equivalent_sizes , x_appended_sizes ,
670
- figW , figH , self .get_anchor ())
666
+ summed_ws = self .get_horizontal_sizes (renderer )
667
+ equal_hs = self .get_vertical_sizes (renderer )
668
+ x0 , y0 , ox , hh = _locate (
669
+ x , y , w , h , summed_ws , equal_hs , fig_w , fig_h , self .get_anchor ())
671
670
if nx1 is None :
672
671
nx1 = nx + 1
673
- x1 , w1 = x0 + ox [nx ] / figW , (ox [nx1 ] - ox [nx ]) / figW
672
+ x1 , w1 = x0 + ox [nx ] / fig_w , (ox [nx1 ] - ox [nx ]) / fig_w
674
673
y1 , h1 = y0 , hh
675
674
return mtransforms .Bbox .from_bounds (x1 , y1 , w1 , h1 )
676
675
@@ -697,17 +696,16 @@ def new_locator(self, ny, ny1=None):
697
696
698
697
def locate (self , nx , ny , nx1 = None , ny1 = None , axes = None , renderer = None ):
699
698
# docstring inherited
700
- figW , figH = self ._fig .get_size_inches ()
699
+ fig_w , fig_h = self ._fig .get_size_inches ()
701
700
x , y , w , h = self .get_position_runtime (axes , renderer )
702
- x_equivalent_sizes = self .get_horizontal_sizes (renderer )
703
- y_appended_sizes = self .get_vertical_sizes (renderer )
704
- y0 , x0 , oy , ww = _locate (y , x , h , w ,
705
- x_equivalent_sizes , y_appended_sizes ,
706
- figH , figW , self .get_anchor ())
701
+ summed_hs = self .get_vertical_sizes (renderer )
702
+ equal_ws = self .get_horizontal_sizes (renderer )
703
+ y0 , x0 , oy , ww = _locate (
704
+ y , x , h , w , summed_hs , equal_ws , fig_h , fig_w , self .get_anchor ())
707
705
if ny1 is None :
708
706
ny1 = ny + 1
709
707
x1 , w1 = x0 , ww
710
- y1 , h1 = y0 + oy [ny ] / figH , (oy [ny1 ] - oy [ny ]) / figH
708
+ y1 , h1 = y0 + oy [ny ] / fig_h , (oy [ny1 ] - oy [ny ]) / fig_h
711
709
return mtransforms .Bbox .from_bounds (x1 , y1 , w1 , h1 )
712
710
713
711
0 commit comments