@@ -1650,7 +1650,10 @@ def _do_layout(gs, layout, unique_ids, nested):
1650
1650
slc = (slice (start_row , end_row ), slice (start_col , end_col ))
1651
1651
1652
1652
if (layout [slc ] != name ).any ():
1653
- raise ValueError
1653
+ raise ValueError (
1654
+ f"While trying to layout\n { layout !r} \n "
1655
+ f"we found that the label { name !r} specifies an "
1656
+ "impossible axes." )
1654
1657
1655
1658
if hasattr (name , 'set_subplotspec' ):
1656
1659
ax = name
@@ -1662,13 +1665,17 @@ def _do_layout(gs, layout, unique_ids, nested):
1662
1665
output [name ] = self .add_subplot (
1663
1666
gs [slc ], ** {'label' : str (name ), ** subplot_kw })
1664
1667
1665
- for (j , k ), layout in nested .items ():
1666
- layout = np .asarray (layout )
1667
- rows , cols = layout .shape
1668
+ for (j , k ), nested_layout in nested .items ():
1669
+ nested_layout = np .asarray (nested_layout , dtype = object )
1670
+ rows , cols = nested_layout .shape
1668
1671
gs_n = gs [j , k ].subgridspec (rows , cols , ** gridspec_kw )
1669
- nested_output = _do_layout (gs_n , layout ,
1670
- * _process_layout (layout ))
1671
-
1672
+ nested_output = _do_layout (gs_n , nested_layout ,
1673
+ * _process_layout (nested_layout ))
1674
+ if set (output ) & set (nested_output ):
1675
+ overlap = set (output ) & set (nested_output )
1676
+ raise ValueError (f"There are duplicate keys { overlap } "
1677
+ f"between the outer layout\n { layout !r} \n "
1678
+ f"and the nested layout\n { nested_layout } " )
1672
1679
output .update (nested_output )
1673
1680
return output
1674
1681
0 commit comments