Matplotlib图facecolor(背景颜色)

有人可以解释为什么下面的代码在设置graphics的facecolor时不起作用吗?

import matplotlib.pyplot as plt # create figure instance fig1 = plt.figure(1) fig1.set_figheight(11) fig1.set_figwidth(8.5) rect = fig1.patch rect.set_facecolor('red') # works with plt.show(). # Does not work with plt.savefig("trial_fig.png") ax = fig1.add_subplot(1,1,1) x = 1, 2, 3 y = 1, 4, 9 ax.plot(x, y) # plt.show() # Will show red face color set above using rect.set_facecolor('red') plt.savefig("trial_fig.png") # The saved trial_fig.png DOES NOT have the red facecolor. # plt.savefig("trial_fig.png", facecolor='red') # Here the facecolor is red. 

当我使用fig1.set_figheight(11) fig1.set_figwidth(8.5)指定graphics的高度和宽度时,这些命令由plt.savefig("trial_fig.png")命令plt.savefig("trial_fig.png") 。 但是,facecolor设置不拾起。 为什么?

谢谢你的帮助。

这是因为savefig覆盖了graphics背景的facecolor。

(这是故意的,实际上……假设你可能想用facecolor kwarg来控制保存graphics的背景颜色来保存图像,但这是一个令人困惑和不一致的默认值)

最简单的解决方法是做fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none') (我在这里指定edgecolor,因为实际graphics的默认edgecolor是白色的,这将给你一个白色的边界,保存的数字周围)

希望有所帮助!

我不得不使用透明关键字来获得我select的颜色

 fig=figure(facecolor='black') 

喜欢这个:

 savefig('figname.png', facecolor=fig.get_facecolor(), transparent=True) 

savefig有自己的facecolor参数。 我认为比接受的答案更简单的方法是将其全局设置为一次 ,而不是每次都放置facecolor=fig.get_facecolor()

 plt.rcParams['axes.facecolor']='red' plt.rcParams['savefig.facecolor']='red'