Skip to content

Commit 59f00ba

Browse files
committed
Add workaround for matplotlib 3.11.0 regression
1 parent 42cdd6c commit 59f00ba

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

src/ert/gui/tools/manage_experiments/rft_qc_widget.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import numpy as np
1010
import numpy.typing as npt
1111
import polars as pl
12+
from matplotlib import __version__ as mpl_version
1213
from matplotlib.backend_bases import MouseEvent, PickEvent
1314
from matplotlib.backends.backend_qt5agg import FigureCanvas # type: ignore
1415
from matplotlib.collections import PathCollection
1516
from matplotlib.figure import Figure
16-
from mpl_toolkits.mplot3d import Axes3D
17+
from mpl_toolkits.mplot3d import Axes3D, axis3d
1718
from mpl_toolkits.mplot3d.art3d import Line3DCollection
1819
from polars.exceptions import ColumnNotFoundError
1920
from PyQt6.QtCore import Qt
@@ -41,6 +42,36 @@
4142
if TYPE_CHECKING:
4243
from ert.config import ErtConfig
4344

45+
46+
def _install_mpl_3d_axis_regression_workaround() -> None:
47+
"""Workaround for a matplotlib 3.11.0 regression when inverting 3D axes.
48+
49+
See issue: https://github.com/matplotlib/matplotlib/issues/31989
50+
Fix expected in matplotlib 3.11.1
51+
"""
52+
53+
if mpl_version != "3.11.0":
54+
return
55+
56+
original_get_coord_info = axis3d.Axis._get_coord_info
57+
58+
def _get_coord_info(
59+
self: axis3d.Axis,
60+
) -> tuple[
61+
npt.NDArray[np.float64],
62+
npt.NDArray[np.float64],
63+
npt.NDArray[np.float64],
64+
npt.NDArray[np.bool_],
65+
]:
66+
mins, maxs, bounds_proj, highs = original_get_coord_info(self)
67+
return np.minimum(mins, maxs), np.maximum(mins, maxs), bounds_proj, highs
68+
69+
axis3d.Axis._get_coord_info = _get_coord_info
70+
71+
72+
_install_mpl_3d_axis_regression_workaround()
73+
74+
4475
_FILTER_WIDTH = 200
4576
_DETAILS_WIDTH = 300
4677

0 commit comments

Comments
 (0)