GeezerVison is showing github.com — Merge pull request #13474 from dstansby/3d-equal-aspect · matplotlib/matplotlib@f8f6fdf
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboard +7Lines changed: 7 additions & 0 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +Equal aspect axes for 3D plots disabled |
| 2 | +``````````````````````````````````````` |
| 3 | + |
| 4 | +Setting the aspect on 3D axes previously returned non-sensical |
| 5 | +results (e.g. see https://github.com/matplotlib/matplotlib/issues/1077). |
| 6 | +Calling ``ax.set_aspect('equal')`` or ``ax.set_aspect(num)`` |
| 7 | +on a 3D axes now raises a ``NotImplementedError``. |
Collapse file
Copy file name to clipboardExpand all lines: lib/matplotlib/axes/_base.py +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -1271,11 +1271,18 @@ def set_aspect(self, aspect, adjustable=None, anchor=None, share=False): |
1271 | 1271 | if not (cbook._str_equal(aspect, 'equal') |
1272 | 1272 | or cbook._str_equal(aspect, 'auto')): |
1273 | 1273 | aspect = float(aspect) # raise ValueError if necessary |
| 1274 | + |
| 1275 | + if (not cbook._str_equal(aspect, 'auto')) and self.name == '3d': |
| 1276 | + raise NotImplementedError( |
| 1277 | + 'It is not currently possible to manually set the aspect ' |
| 1278 | + 'on 3D axes') |
| 1279 | + |
1274 | 1280 | if share: |
1275 | 1281 | axes = set(self._shared_x_axes.get_siblings(self) |
1276 | 1282 | + self._shared_y_axes.get_siblings(self)) |
1277 | 1283 | else: |
1278 | 1284 | axes = [self] |
| 1285 | + |
1279 | 1286 | for ax in axes: |
1280 | 1287 | ax._aspect = aspect |
1281 | 1288 |
|
|
Collapse file
Copy file name to clipboardExpand all lines: lib/mpl_toolkits/tests/test_mplot3d.py +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
11 | 11 | import numpy as np |
12 | 12 |
|
13 | 13 |
|
| 14 | +def test_aspect_equal_error(): |
| 15 | + fig = plt.figure() |
| 16 | + ax = fig.add_subplot(111, projection='3d') |
| 17 | + with pytest.raises(NotImplementedError): |
| 18 | + ax.set_aspect('equal') |
| 19 | + |
| 20 | + |
14 | 21 | @image_comparison(baseline_images=['bar3d'], remove_text=True) |
15 | 22 | def test_bar3d(): |
16 | 23 | fig = plt.figure() |
|