有人可以解释一下设置图形的面色时为什么下面的代码不起作用吗?
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)这些命令指定图形的高度和宽度时,这些命令将被拾取plt.savefig("trial_fig.png")。但是,没有选择Facecolor设置。为什么?
fig1.set_figheight(11)
fig1.set_figwidth(8.5)
plt.savefig("trial_fig.png")
谢谢你的帮助。
这是因为savefig覆盖图形背景的面色。
savefig
(实际上,这是有意的。假设是您可能希望使用facecolorkwarg来控制保存的图形的背景色。不过,savefig这是一个令人困惑且不一致的默认值!)
facecolor
最简单的解决方法是做fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')(我在这里指定edgecolor,因为实际图形的默认edgecolor是白色,这将在保存的图形周围提供白色边框)
fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')
希望有帮助!