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'