|
45 | 45 | import matplotlib.cm as cm
|
46 | 46 | import matplotlib.patches as mpatches
|
47 | 47 | import matplotlib.path as mpath
|
| 48 | +import matplotlib.spines as mspines |
48 | 49 | import matplotlib.ticker as ticker
|
49 | 50 | import matplotlib.transforms as mtransforms
|
50 | 51 | import matplotlib._layoutbox as layoutbox
|
@@ -321,6 +322,27 @@ def tick_values(self, vmin, vmax):
|
321 | 322 | return ticks
|
322 | 323 |
|
323 | 324 |
|
| 325 | +class _ColorbarSpine(mspines.Spine): |
| 326 | + def __init__(self, axes): |
| 327 | + super().__init__(axes, 'colorbar', |
| 328 | + mpath.Path(np.empty((0, 2)), closed=True)) |
| 329 | + |
| 330 | + def get_window_extent(self, renderer=None): |
| 331 | + # This Spine has no Axis associated with it, and doesn't need to adjust |
| 332 | + # its location, so we can directly get the window extent from the |
| 333 | + # super-super-class. |
| 334 | + return mpatches.Patch.get_window_extent(self, renderer=renderer) |
| 335 | + |
| 336 | + def set_xy(self, xy): |
| 337 | + self._path = mpath.Path(xy, closed=True) |
| 338 | + self.stale = True |
| 339 | + |
| 340 | + def draw(self, renderer): |
| 341 | + ret = mpatches.Patch.draw(self, renderer) |
| 342 | + self.stale = False |
| 343 | + return ret |
| 344 | + |
| 345 | + |
324 | 346 | class ColorbarBase:
|
325 | 347 | r"""
|
326 | 348 | Draw a colorbar in an existing axes.
|
@@ -427,7 +449,7 @@ def __init__(self, ax, cmap=None,
|
427 | 449 | self.ax = ax
|
428 | 450 | # Bind some methods to the axes to warn users against using them.
|
429 | 451 | ax.set_xticks = ax.set_yticks = _set_ticks_on_axis_warn
|
430 |
| - ax.set(frame_on=False, navigate=False) |
| 452 | + ax.set(navigate=False) |
431 | 453 |
|
432 | 454 | if cmap is None:
|
433 | 455 | cmap = cm.get_cmap()
|
@@ -457,12 +479,9 @@ def __init__(self, ax, cmap=None,
|
457 | 479 | self.solids = None
|
458 | 480 | self.lines = []
|
459 | 481 |
|
460 |
| - self.outline = mpatches.Polygon( |
461 |
| - np.empty((0, 2)), |
462 |
| - edgecolor=mpl.rcParams['axes.edgecolor'], facecolor='none', |
463 |
| - linewidth=mpl.rcParams['axes.linewidth'], closed=True, zorder=2) |
464 |
| - ax.add_artist(self.outline) |
465 |
| - self.outline.set(clip_box=None, clip_path=None) |
| 482 | + for spine in ax.spines.values(): |
| 483 | + spine.set_visible(False) |
| 484 | + self.outline = ax.spines['outline'] = _ColorbarSpine(ax) |
466 | 485 |
|
467 | 486 | self.patch = mpatches.Polygon(
|
468 | 487 | np.empty((0, 2)),
|
@@ -1304,12 +1323,9 @@ def update_bruteforce(self, mappable):
|
1304 | 1323 | self.formatter = None
|
1305 | 1324 |
|
1306 | 1325 | # clearing the axes will delete outline, patch, solids, and lines:
|
1307 |
| - self.outline = mpatches.Polygon( |
1308 |
| - np.empty((0, 2)), |
1309 |
| - edgecolor=mpl.rcParams['axes.edgecolor'], facecolor='none', |
1310 |
| - linewidth=mpl.rcParams['axes.linewidth'], closed=True, zorder=2) |
1311 |
| - self.ax.add_artist(self.outline) |
1312 |
| - self.outline.set(clip_box=None, clip_path=None) |
| 1326 | + for spine in self.ax.spines.values(): |
| 1327 | + spine.set_visible(False) |
| 1328 | + self.outline = self.ax.spines['outline'] = _ColorbarSpine(self.ax) |
1313 | 1329 | self.patch = mpatches.Polygon(
|
1314 | 1330 | np.empty((0, 2)),
|
1315 | 1331 | color=mpl.rcParams['axes.facecolor'], linewidth=0.01, zorder=-1)
|
|
0 commit comments