【问题标题】:matplotlib pyplot pcolor savefig colorbar transparencymatplotlib pyplot pcolor savefig 颜色条透明度
【发布时间】:2018-11-07 13:14:04
【问题描述】:

我正在尝试使用颜色条导出 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 是透明的,而颜色栏中的则不是。

【问题讨论】:

  • 由于白色背景上的透明颜色根本不透明,您建议如何处理生成的 pdf 以查看该问题?
  • 见附图

标签: matplotlib transparency colorbar


【解决方案1】:

虽然颜色条位于坐标区中,但它还有一个与之关联的附加背景补丁。默认为白色,在savefig 内部使用transparent=True 时不会考虑在内。

因此,一种解决方案是手动移除此补丁的 facecolor,

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()

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 2020-03-30
    • 2015-01-07
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多