Ошибка при установке plt.axis ('off') с помощью matplotlib - PullRequest
2 голосов
/ 09 февраля 2020

Я получаю следующую ошибку, когда пытаюсь сохранить свой ndarray с помощью matplotlib, с помощью plt.axis ('off'):

  File "classifier/classifier_tester.py", line 25, in remove_outliers
    plt.axes('off')
  File "/usr/lib64/python3.6/site-packages/matplotlib/pyplot.py", line 923, in axes
    return gcf().add_axes(rect, **kwargs)
  File "/usr/lib64/python3.6/site-packages/matplotlib/figure.py", line 1135, in add_axes
    if not np.isfinite(rect).all():
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Я никогда не видел этой ошибки, что может быть проблема? D-тип моего ndarrays: float64.

Для контекста в этой функции возникает ошибка:

def remove_outliers(image, save_dir, counter):
    from scipy import ndimage
    from skimage.morphology import watershed
    distance = ndimage.distance_transform_edt(image)
    markers = ndimage.label(image)[0]
    labels = watershed(-distance, markers, mask=image)
    print(type(distance))
    print(distance.dtype)
    if len(np.unique(labels)) > 2:
        new = np.where(labels == 1, 1, 0)
        plt.imshow(distance)
        plt.axes('off')
        plt.savefig(save_dir + 'outliers/distance{}.pdf'.format(counter), format='pdf')
        plt.close()
        plt.imshow(labels)
        plt.title(str(np.unique(labels)))
        # plt.axes('off')
        plt.savefig(save_dir + 'outliers/labels{}.pdf'.format(counter), format='pdf')
        plt.close()
        plt.imshow(new, cmap = 'gray')
        # plt.axes('off')
        plt.savefig(save_dir + 'outliers/output{}.pdf'.format(counter), format='pdf')
        plt.close()
        plt.imshow(image, cmap = 'gray')
        # plt.axes('off')
        plt.savefig(save_dir + 'outliers/input{}.pdf'.format(counter), format='pdf')
        plt.close()
        return new
    else: return image

Редактировать: также у меня нет проблем с сохранением изображений с осью.

1 Ответ

2 голосов
/ 09 февраля 2020

Вы путаете axis с axes.

>>> import matplotlib.pyplot as plt
>>> plt.axis('off')
(0.0, 1.0, 0.0, 1.0)
>>> plt.axes('off')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...