рисунок matplotlib для массива без белых границ - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь найти способ преобразовать фигуру matplotlib в пустой массив без каких-либо пробелов или границ.

Я обнаружил, что если я воспользуюсь приведенным ниже кодом, я получу что-то довольно близкое, но у массива «данных» все равно будут некоторые белые границы. Белая рамка (изменяется по мере масштабирования окна) сохраняется как часть массива numpy, но я хочу только содержимое.

Есть ли способ избавиться от этой белой области?

white borders

fig = plt.figure(frameon=False)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
ax.set_ylim(height, 0)
ax.set_xlim(0, width)
ax.axis('off')
fig.add_axes(ax)

ax.imshow(myimage) # Plus lots of other things

plt.show() # fig.canvas.draw() also works the same
data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
plt.close()

Подобный вопрос был задан здесь ранее, но собственная работа автора с PIL не соответствует тому, что мне нужно.

1 Ответ

0 голосов
/ 13 мая 2018

Я думаю, subplots_adjust является ключом здесь.Кажется, работает на игрушечном примере, но было бы здорово, если бы вы могли предоставить минимальный рабочий код, чтобы увидеть, работает ли он в вашем случае использования.

import numpy as np
import matplotlib as mpl
# mpl.use('Agg')
import matplotlib.pyplot as plt

img = np.ones((100, 200))
img[25:75, 50:150] = 0

fig = plt.figure()
ax = fig.gca()

ax.imshow(img)
ax.axis('tight')

plt.subplots_adjust(0,0,1,1,0,0)

plt.show()

data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
w, h = fig.canvas.get_width_height()
data = data.reshape((h, w, 3))

plt.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...