如何用Matplotlib设置图形背景颜色的不透明度

60 python alpha matplotlib

我一直在玩Matplotlib,我无法弄清楚如何改变图形的背景颜色,或者如何使背景完全透明.

Joe*_*ton 100

如果您只想让图形和轴的整个背景都透明,您只需指定transparent=True何时保存图形fig.savefig.

例如:

import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png', transparent=True)
Run Code Online (Sandbox Code Playgroud)

如果想要更精细的控制,可以简单地为图形和轴背景补丁设置facecolor和/或alpha值.(要使补丁完全透明,我们可以将alpha设置为0,或将facecolor设置为'none'(作为字符串,而不是对象None!))

例如:

import matplotlib.pyplot as plt

fig = plt.figure()

fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.7)

ax = fig.add_subplot(111)

ax.plot(range(10))

ax.patch.set_facecolor('red')
ax.patch.set_alpha(0.5)

# If we don't specify the edgecolor and facecolor for the figure when
# saving with savefig, it will override the value we set earlier!
fig.savefig('temp.png', facecolor=fig.get_facecolor(), edgecolor='none')

plt.show()
Run Code Online (Sandbox Code Playgroud)

替代文字

  • 将`facecolor`设置为''none'并不适用于我; 将`alpha`设置为`0.0`. (4认同)
  • 对我来说,将facecolor设置为`“ None”`确实有效。将其设置为“无”无效。 (2认同)

And*_*mer 16

另一种方法是设置适当的全局 rcParams并简单地指定颜色。这是一个 MWE(我使用 RGBA 颜色格式来指定 alpha/opacity):

import matplotlib.pyplot as plt

plt.rcParams.update({
    "figure.facecolor":  (1.0, 0.0, 0.0, 0.3),  # red   with alpha = 30%
    "axes.facecolor":    (0.0, 1.0, 0.0, 0.5),  # green with alpha = 50%
    "savefig.facecolor": (0.0, 0.0, 1.0, 0.2),  # blue  with alpha = 20%
})

plt.plot(range(10))
plt.savefig("temp.png")
plt.show()
Run Code Online (Sandbox Code Playgroud)

figure.facecolor是主要的背景颜色和axes.facecolor主线剧情的背景色。无论出于何种原因,plt.savefig使用savefig.facecolor作为主要背景颜色而不是figure.facecolor,因此请确保相应地更改此参数。

plt.show() 从上面的代码产生以下输出:

在此处输入图片说明

plt.savefig("temp.png")导致此输出:

在此处输入图片说明

如果你想让某些东西完全透明,只需将相应颜色的 alpha 值设置为 0。对于plt.savefig,还有一个“懒惰”选项,通过将 rc-parameter 设置savefig.transparentTrue,将所有 facecolors 的 alpha 设置为 0%。

请注意,更改rcParams具有全局效果,因此请记住,您的所有图都将受到这些更改的影响。但是,如果您有多个绘图,或者如果您想在无法更改源代码的情况下更改绘图的外观,则此解决方案可能非常有用。