matplotlib pyplot pcolor savefig颜色栏透明度

时间:2018-11-07 13:14:05

标签: matplotlib transparency colorbar

我正在尝试导出带有颜色栏的pcolor图形。 颜色栏的cmap具有透明颜色。 导出的图形在轴上具有透明颜色,但在颜色栏中没有。我该如何解决?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

x = np.random.random((10, 10))
colors = [(0,0,0,0), (0,0,0,1)]
cm = LinearSegmentedColormap.from_list('custom', colors, N=256, gamma=0)
plt.pcolor(x,cmap=cm)
plt.colorbar()
plt.savefig('figure.pdf',transparent=True)

我将图像放在灰色背景下进行检查。可以看出,坐标轴上的cmap是透明的,而颜色栏中的cmap不是。

I put the image against a grey background to check. As can be seen, the cmap in the axes is transparent while the one in the colorbar is not

1 个答案:

答案 0 :(得分:0)

虽然颜色栏位于轴内,但它具有与其关联的其他背景色块。默认情况下为白色,在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()

enter image description here