Set 3D axis limits.
(self, axis, lower=None, upper=None, *, emit=True,
auto=False, view_margin=None, axmin=None, axmax=None,
minpos=np.inf)
| 830 | lower, upper, view_margin) |
| 831 | |
| 832 | def _set_lim3d(self, axis, lower=None, upper=None, *, emit=True, |
| 833 | auto=False, view_margin=None, axmin=None, axmax=None, |
| 834 | minpos=np.inf): |
| 835 | """ |
| 836 | Set 3D axis limits. |
| 837 | """ |
| 838 | if upper is None: |
| 839 | if np.iterable(lower): |
| 840 | lower, upper = lower |
| 841 | elif axmax is None: |
| 842 | upper = axis.get_view_interval()[1] |
| 843 | if lower is None and axmin is None: |
| 844 | lower = axis.get_view_interval()[0] |
| 845 | if axmin is not None: |
| 846 | if lower is not None: |
| 847 | raise TypeError("Cannot pass both 'lower' and 'min'") |
| 848 | lower = axmin |
| 849 | if axmax is not None: |
| 850 | if upper is not None: |
| 851 | raise TypeError("Cannot pass both 'upper' and 'max'") |
| 852 | upper = axmax |
| 853 | if np.isinf(lower) or np.isinf(upper): |
| 854 | raise ValueError(f"Axis limits {lower}, {upper} cannot be infinite") |
| 855 | if view_margin is None: |
| 856 | if mpl.rcParams['axes3d.automargin']: |
| 857 | view_margin = self._view_margin |
| 858 | else: |
| 859 | view_margin = 0 |
| 860 | # Apply margin in transformed space to handle non-linear scales properly |
| 861 | if view_margin > 0 and hasattr(axis, '_scale') and axis._scale is not None: |
| 862 | transform = axis.get_transform() |
| 863 | inverse_trans = transform.inverted() |
| 864 | lower, upper = axis._scale.limit_range_for_scale(lower, upper, minpos) |
| 865 | lower_t, upper_t = transform.transform([lower, upper]) |
| 866 | delta = (upper_t - lower_t) * view_margin |
| 867 | if np.isfinite(delta): |
| 868 | new_range = [lower_t - delta, upper_t + delta] |
| 869 | lower, upper = inverse_trans.transform(new_range) |
| 870 | else: |
| 871 | delta = (upper - lower) * view_margin |
| 872 | lower -= delta |
| 873 | upper += delta |
| 874 | return axis._set_lim(lower, upper, emit=emit, auto=auto) |
| 875 | |
| 876 | def set_xlim(self, left=None, right=None, *, emit=True, auto=False, |
| 877 | view_margin=None, xmin=None, xmax=None): |
no test coverage detected