mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-13 17:45:20 +08:00
9e9207c718
`tight_layout` is not supported on all backends, so Matplotlib may raise a warning, saying it is falling back to the Agg backend. Since we use the 'Template' backend in our tests, this warning pops up from time to time.
128 lines
4.0 KiB
Python
128 lines
4.0 KiB
Python
from __future__ import division
|
|
|
|
import numpy as np
|
|
from skimage import io
|
|
from skimage._shared._warnings import expected_warnings
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def setup():
|
|
io.reset_plugins()
|
|
|
|
# test images. Note that they don't have their full range for their dtype,
|
|
# but we still expect the display range to equal the full dtype range.
|
|
im8 = np.array([[0, 64], [128, 240]], np.uint8)
|
|
im16 = im8.astype(np.uint16) * 256
|
|
im64 = im8.astype(np.uint64)
|
|
imf = im8 / 255
|
|
im_lo = imf / 1000
|
|
im_hi = imf + 10
|
|
|
|
|
|
def n_subplots(ax_im):
|
|
"""Return the number of subplots in the figure containing an ``AxesImage``.
|
|
|
|
Parameters
|
|
----------
|
|
ax_im : matplotlib.pyplot.AxesImage object
|
|
The input ``AxesImage``.
|
|
|
|
Returns
|
|
-------
|
|
n : int
|
|
The number of subplots in the corresponding figure.
|
|
|
|
Notes
|
|
-----
|
|
This function is intended to check whether a colorbar was drawn, in
|
|
which case two subplots are expected. For standard imshows, one
|
|
subplot is expected.
|
|
"""
|
|
return len(ax_im.get_figure().get_axes())
|
|
|
|
|
|
def test_uint8():
|
|
plt.figure()
|
|
with expected_warnings(["tight_layout : Falling back to Agg|\A\Z",
|
|
"CObject type is marked|\A\Z"]):
|
|
ax_im = io.imshow(im8)
|
|
assert ax_im.cmap.name == 'gray'
|
|
assert ax_im.get_clim() == (0, 255)
|
|
assert n_subplots(ax_im) == 1
|
|
assert ax_im.colorbar is None
|
|
|
|
|
|
def test_uint16():
|
|
plt.figure()
|
|
with expected_warnings(["tight_layout : Falling back to Agg|\A\Z",
|
|
"CObject type is marked|\A\Z"]):
|
|
ax_im = io.imshow(im16)
|
|
assert ax_im.cmap.name == 'gray'
|
|
assert ax_im.get_clim() == (0, 65535)
|
|
assert n_subplots(ax_im) == 1
|
|
assert ax_im.colorbar is None
|
|
|
|
|
|
def test_float():
|
|
plt.figure()
|
|
with expected_warnings(["tight_layout : Falling back to Agg|\A\Z",
|
|
"CObject type is marked|\A\Z"]):
|
|
ax_im = io.imshow(imf)
|
|
assert ax_im.cmap.name == 'gray'
|
|
assert ax_im.get_clim() == (0, 1)
|
|
assert n_subplots(ax_im) == 1
|
|
assert ax_im.colorbar is None
|
|
|
|
|
|
def test_low_dynamic_range():
|
|
with expected_warnings(["Low image dynamic range|CObject type is marked",
|
|
"tight_layout : Falling back to Agg|\A\Z"]):
|
|
ax_im = io.imshow(im_lo)
|
|
assert ax_im.get_clim() == (im_lo.min(), im_lo.max())
|
|
# check that a colorbar was created
|
|
assert ax_im.colorbar is not None
|
|
|
|
|
|
def test_outside_standard_range():
|
|
plt.figure()
|
|
# 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",
|
|
"tight_layout : Falling back to Agg|\A\Z"]):
|
|
ax_im = io.imshow(im_hi)
|
|
assert ax_im.get_clim() == (im_hi.min(), im_hi.max())
|
|
assert n_subplots(ax_im) == 2
|
|
assert ax_im.colorbar is not None
|
|
|
|
|
|
def test_nonstandard_type():
|
|
plt.figure()
|
|
# 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",
|
|
"tight_layout : Falling back to Agg|\A\Z"]):
|
|
ax_im = io.imshow(im64)
|
|
assert ax_im.get_clim() == (im64.min(), im64.max())
|
|
assert n_subplots(ax_im) == 2
|
|
assert ax_im.colorbar is not None
|
|
|
|
|
|
def test_signed_image():
|
|
plt.figure()
|
|
im_signed = np.array([[-0.5, -0.2], [0.1, 0.4]])
|
|
|
|
with expected_warnings(["tight_layout : Falling back to Agg|\A\Z",
|
|
"CObject type is marked|\A\Z"]):
|
|
ax_im = io.imshow(im_signed)
|
|
assert ax_im.get_clim() == (-0.5, 0.5)
|
|
assert n_subplots(ax_im) == 2
|
|
assert ax_im.colorbar is not None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
np.testing.run_module_suite()
|