mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-01 07:27:48 +08:00
Merge pull request #1817 from blink1073/upgrade-imshow
ENH: Allow axes to be provided to imshow and fix colorbar
This commit is contained in:
+2
-2
@@ -18,8 +18,8 @@ addons:
|
||||
packages:
|
||||
- ccache
|
||||
- libfreeimage3
|
||||
- texlive
|
||||
- texlive-latex-extra
|
||||
- texlive
|
||||
- texlive-latex-extra
|
||||
- dvipng
|
||||
- python-qt4
|
||||
env:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from collections import namedtuple
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from mpl_toolkits.axes_grid1 import make_axes_locatable
|
||||
from ...util import dtype as dtypes
|
||||
from ...exposure import is_low_contrast
|
||||
from ...util.colormap import viridis
|
||||
@@ -110,7 +111,7 @@ def _get_display_range(image):
|
||||
return lo, hi, cmap
|
||||
|
||||
|
||||
def imshow(im, *args, **kwargs):
|
||||
def imshow(im, ax=None, show_cbar=None, **kwargs):
|
||||
"""Show the input image and return the current axes.
|
||||
|
||||
By default, the image is displayed in greyscale, rather than
|
||||
@@ -131,8 +132,11 @@ def imshow(im, *args, **kwargs):
|
||||
----------
|
||||
im : array, shape (M, N[, 3])
|
||||
The image to display.
|
||||
|
||||
*args, **kwargs : positional and keyword arguments
|
||||
ax: `matplotlib.axes.Axes`, optional
|
||||
The axis to use for the image, defaults to plt.gca().
|
||||
show_cbar: boolean, optional.
|
||||
Whether to show the colorbar (used to override default behavior).
|
||||
**kwargs : Keyword arguments
|
||||
These are passed directly to `matplotlib.pyplot.imshow`.
|
||||
|
||||
Returns
|
||||
@@ -147,9 +151,15 @@ def imshow(im, *args, **kwargs):
|
||||
kwargs.setdefault('cmap', cmap)
|
||||
kwargs.setdefault('vmin', lo)
|
||||
kwargs.setdefault('vmax', hi)
|
||||
ax_im = plt.imshow(im, *args, **kwargs)
|
||||
if cmap != _default_colormap:
|
||||
plt.colorbar()
|
||||
|
||||
ax = ax or plt.gca()
|
||||
ax_im = ax.imshow(im, **kwargs)
|
||||
if (cmap != _default_colormap and show_cbar is not False) or show_cbar:
|
||||
divider = make_axes_locatable(ax)
|
||||
cax = divider.append_axes("right", size="5%", pad=0.05)
|
||||
plt.colorbar(ax_im, cax=cax)
|
||||
ax.set_adjustable('box-forced')
|
||||
ax.get_figure().tight_layout()
|
||||
return ax_im
|
||||
|
||||
imread = plt.imread
|
||||
|
||||
@@ -78,7 +78,11 @@ def test_low_dynamic_range():
|
||||
|
||||
def test_outside_standard_range():
|
||||
plt.figure()
|
||||
with expected_warnings(["out of standard range"]):
|
||||
# Warning raised by matplotlib on Windows:
|
||||
# "The CObject type is marked Pending Deprecation in Python 2.7.
|
||||
# Please use capsule objects instead."
|
||||
# Ref: https://docs.python.org/2/c-api/cobject.html
|
||||
with expected_warnings(["out of standard range|CObject type is marked"]):
|
||||
ax_im = io.imshow(im_hi)
|
||||
assert ax_im.get_clim() == (im_hi.min(), im_hi.max())
|
||||
assert n_subplots(ax_im) == 2
|
||||
@@ -87,7 +91,11 @@ def test_outside_standard_range():
|
||||
|
||||
def test_nonstandard_type():
|
||||
plt.figure()
|
||||
with expected_warnings(["Low image dynamic range"]):
|
||||
# Warning raised by matplotlib on Windows:
|
||||
# "The CObject type is marked Pending Deprecation in Python 2.7.
|
||||
# Please use capsule objects instead."
|
||||
# Ref: https://docs.python.org/2/c-api/cobject.html
|
||||
with expected_warnings(["Low image dynamic range|CObject type is marked"]):
|
||||
ax_im = io.imshow(im64)
|
||||
assert ax_im.get_clim() == (im64.min(), im64.max())
|
||||
assert n_subplots(ax_im) == 2
|
||||
|
||||
Reference in New Issue
Block a user