Как сохранить стопки изображений imshow с прозрачностью? - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь создать стопку из трех изображений и сохранить результат в виде eps с прозрачным фоном. Вот что я пробовал до сих пор:

Попытка 1:

import numpy as np
from matplotlib import pyplot as plt

red = np.random.normal(size=(100,100))
green = np.random.normal(size=(100,100))
blue = np.random.normal(size=(100,100))

fig,ax = plt.subplots()
ax.imshow(red,   cmap="Reds_r",   extent=( 0., 100.,  0., 100.), zorder=2)
ax.imshow(green, cmap="Greens_r", extent=(20., 120., 15., 115.), zorder=1)
ax.imshow(blue,  cmap="Blues_r",  extent=(40., 140., 30., 130.), zorder=0)

ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_axis_off()

plt.savefig("frames.eps", format="eps", transparent=True)
plt.show()

Попытка 2:

import numpy as np
from matplotlib import pyplot as plt

red = np.random.normal(size=(100,100))
green = np.random.normal(size=(100,100))
blue = np.random.normal(size=(100,100))

colors = np.ones(shape=(150,150,4))
colors[:,:,3] = 0.
colors[30:130,40:140,:] = mpl.cm.Blues_r( mpl.colors.Normalize()(blue) )
colors[15:115,20:120,:] = mpl.cm.Greens_r( mpl.colors.Normalize()(green) )
colors[0:100,0:100,:] = mpl.cm.Reds_r( mpl.colors.Normalize()(red) )

fig,ax = plt.subplots(facecolor="None")
ax.imshow(colors)

ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_axis_off()

plt.savefig("frames.eps", format="eps", transparent=True)
plt.show()

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

enter image description here

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