@@ -1513,7 +1513,10 @@ def _axes_dimensions(ax: plt.Axes) -> int:
15131513 # handle the case of Animate objects pretending to be Axes
15141514 classname = ax .__class__ .__name__
15151515 base_classes = ax .__class__ .__bases__
1516- if classname in ("Axes3DSubplot" , "Animate" ) or any (base_class .__name__ in ("Axes3DSubplot" , "Animate" ) for base_class in base_classes ):
1516+ if classname in ("Axes3DSubplot" , "Animate" ) or any (
1517+ base_class .__name__ in ("Axes3DSubplot" , "Animate" )
1518+ for base_class in base_classes
1519+ ):
15171520 return 3
15181521 elif classname in ("AxesSubplot" , "Animate2" ):
15191522 return 2
@@ -1736,20 +1739,24 @@ def plotvol3(
17361739 ax ._plotvol = True
17371740 return ax
17381741
1739- def expand_dims (dim : ArrayLike = None , nd : int = 2 ) -> NDArray :
1742+ def expand_dims (dim : ArrayLike | None = None , nd : int = 2 ) -> NDArray | None :
17401743 """
17411744 Expand compact axis dimensions
17421745
1743- :param dim: dimensions, defaults to None
1746+ :param dim: dimensions, or None if unspecified, defaults to None
17441747 :type dim: scalar, array_like(2), array_like(4), array_like(6), optional
1745- :param nd: number of axes dimensions, defaults to 2
1748+ :param nd: number of axes dimensions (2 or 3) , defaults to 2
17461749 :type nd: int, optional
17471750 :raises ValueError: bad arguments
1748- :return: 2d or 3d dimensions vector
1749- :rtype: ndarray(4) or ndarray(6)
1751+ :return: 2d or 3d dimensions vector, or None if unspecified
1752+ :rtype: ndarray(4), ndarray(6), or None
17501753
17511754 Compute bounding dimensions for plots from shorthand notation.
17521755
1756+ ``None`` is returned unchanged so the caller can choose whether to
1757+ autoscale or obtain dimensions from another source. No default extent
1758+ is inferred.
1759+
17531760 If ``nd==2``, [xmin, xmax, ymin, ymax]:
17541761 * A -> [-A, A, -A, A]
17551762 * [A,B] -> [A, B, A, B]
@@ -1760,6 +1767,11 @@ def expand_dims(dim: ArrayLike = None, nd: int = 2) -> NDArray:
17601767 * [A,B] -> [A, B, A, B, A, B]
17611768 * [A,B,C,D,E,F] -> [A, B, C, D, E, F]
17621769 """
1770+ if nd not in (2 , 3 ):
1771+ raise ValueError ("nd is 2 or 3" )
1772+ if dim is None :
1773+ return None
1774+
17631775 dim = smb .getvector (dim )
17641776
17651777 if nd == 2 :
@@ -1780,8 +1792,6 @@ def expand_dims(dim: ArrayLike = None, nd: int = 2) -> NDArray:
17801792 return dim
17811793 else :
17821794 raise ValueError ("bad dimension specified" )
1783- else :
1784- raise ValueError ("nd is 2 or 3" )
17851795
17861796 def isnotebook () -> bool :
17871797 """
0 commit comments