我一直在玩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)

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.transparent为True,将所有 facecolors 的 alpha 设置为 0%。
请注意,更改rcParams具有全局效果,因此请记住,您的所有图都将受到这些更改的影响。但是,如果您有多个绘图,或者如果您想在无法更改源代码的情况下更改绘图的外观,则此解决方案可能非常有用。
| 归档时间: |
|
| 查看次数: |
71403 次 |
| 最近记录: |