|
13 | 13 |
|
14 | 14 | import matplotlib as mpl
|
15 | 15 | from . import _api, cbook
|
16 |
| -from .colors import BoundaryNorm |
17 |
| -from .cm import ScalarMappable |
18 | 16 | from .path import Path
|
19 | 17 | from .transforms import (BboxBase, Bbox, IdentityTransform, Transform, TransformedBbox,
|
20 | 18 | TransformedPatchPath, TransformedPath)
|
@@ -1346,37 +1344,11 @@ def format_cursor_data(self, data):
|
1346 | 1344 | --------
|
1347 | 1345 | get_cursor_data
|
1348 | 1346 | """
|
1349 |
| - if np.ndim(data) == 0 and isinstance(self, ScalarMappable): |
1350 |
| - # This block logically belongs to ScalarMappable, but can't be |
1351 |
| - # implemented in it because most ScalarMappable subclasses inherit |
1352 |
| - # from Artist first and from ScalarMappable second, so |
1353 |
| - # Artist.format_cursor_data would always have precedence over |
1354 |
| - # ScalarMappable.format_cursor_data. |
1355 |
| - n = self.cmap.N |
1356 |
| - if np.ma.getmask(data): |
1357 |
| - return "[]" |
1358 |
| - normed = self.norm(data) |
1359 |
| - if np.isfinite(normed): |
1360 |
| - if isinstance(self.norm, BoundaryNorm): |
1361 |
| - # not an invertible normalization mapping |
1362 |
| - cur_idx = np.argmin(np.abs(self.norm.boundaries - data)) |
1363 |
| - neigh_idx = max(0, cur_idx - 1) |
1364 |
| - # use max diff to prevent delta == 0 |
1365 |
| - delta = np.diff( |
1366 |
| - self.norm.boundaries[neigh_idx:cur_idx + 2] |
1367 |
| - ).max() |
1368 |
| - elif self.norm.vmin == self.norm.vmax: |
1369 |
| - # singular norms, use delta of 10% of only value |
1370 |
| - delta = np.abs(self.norm.vmin * .1) |
1371 |
| - else: |
1372 |
| - # Midpoints of neighboring color intervals. |
1373 |
| - neighbors = self.norm.inverse( |
1374 |
| - (int(normed * n) + np.array([0, 1])) / n) |
1375 |
| - delta = abs(neighbors - data).max() |
1376 |
| - g_sig_digits = cbook._g_sig_digits(data, delta) |
1377 |
| - else: |
1378 |
| - g_sig_digits = 3 # Consistent with default below. |
1379 |
| - return f"[{data:-#.{g_sig_digits}g}]" |
| 1347 | + if np.ndim(data) == 0 and hasattr(self, "_format_cursor_data_override"): |
| 1348 | + # workaround for ScalarMappable to be able to define its own |
| 1349 | + # format_cursor_data(). See ScalarMappable._format_cursor_data_override |
| 1350 | + # for details. |
| 1351 | + return self._format_cursor_data_override(data) |
1380 | 1352 | else:
|
1381 | 1353 | try:
|
1382 | 1354 | data[0]
|
|
0 commit comments