Пока цветовая полоса находится внутри осей, с ней связан дополнительный фоновый патч. По умолчанию он белый и не будет учитываться, если transparent=True
используется внутри savefig
.
Поэтому решение состоит в том, чтобы удалить цвет лица этого патча вручную,
cb.patch.set_facecolor("none")
Полный пример, который показывает это без фактического сохранения рисунка
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
x = np.random.random((10, 10))
colors = [(1,1,1,0), (0,0,0,1)]
cm = LinearSegmentedColormap.from_list('custom', colors, N=256, gamma=0)
fig, ax = plt.subplots(facecolor="grey")
im = ax.pcolor(x,cmap=cm)
cb = fig.colorbar(im, drawedges=False)
ax.set_facecolor("none")
cb.patch.set_facecolor("none")
plt.show()