Я пытаюсь создать изображение из массива, используя imshow
, и экспортировать его в файл без добавления пробелов.
В случае, когда данные имеют одинаковую ширину и высоту, мне удалосьчтобы достичь этого, следуя этому ответу :
import numpy as np
import matplotlib.pyplot as plt
def borderless_imshow_save(data, outputname, size=(1, 1), dpi=80):
fig = plt.figure()
fig.set_size_inches(size)
ax = plt.Axes(fig, [0, 0, 1, 1])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(data);
plt.savefig(outputname, dpi=dpi)
data = np.random.randn(40, 40)
borderless_imshow_save(data, 'test.png', dpi=100)
Это прекрасно работает.Тем не менее, мне действительно нужно сделать это для данных, которые являются прямоугольными, то есть что-то вроде np.random.randn(40, 100)
.
. В этом случае приведенный выше код не работает, так как снова пробелы создаются в конечном изображении.Я попытался поиграть с параметром size
и аргументами plt.Axes
, но безуспешно.
Какой лучший способ добиться этого?
Обратите внимание, что imsave
на самом деле работает здесь с чем-токак
plt.imsave('test.png', np.random.randn(40, 100))
проблема в том, что с imsave
у меня нет доступа к тому же количеству опций, которые у меня есть с imshow
.