Cur*_*arn 69 python matplotlib
有人可以解释为什么设置图形的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.
Run Code Online (Sandbox Code Playgroud)
当我指定使用fig1.set_figheight(11) fig1.set_figwidth(8.5)这些图的高度和宽度时,由命令拾取plt.savefig("trial_fig.png").但是,未拾取面部颜色设置.为什么?
谢谢你的帮助.
Joe*_*ton 99
这是因为savefig覆盖了人物背景的脸部颜色.
(这是故意的,实际上......假设你可能想要用facecolorkwarg来控制保存的数字的背景颜色savefig.但这是一个令人困惑和不一致的默认值!)
最简单的解决方法就是这样做fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')(我在这里指定了edgecolor,因为实际图形的默认边缘颜色是白色,这将为您提供围绕已保存图形的白色边框)
希望有所帮助!
Lab*_*bah 26
我必须使用transparent关键字来获取我选择的初始颜色
fig=figure(facecolor='black')
Run Code Online (Sandbox Code Playgroud)
像这样:
savefig('figname.png', facecolor=fig.get_facecolor(), transparent=True)
Run Code Online (Sandbox Code Playgroud)
toz*_*CSS 21
savefig有自己的参数facecolor.我认为比接受的答案更简单的方法是将它们全局设置一次,而不是facecolor=fig.get_facecolor()每次都放置:
plt.rcParams['axes.facecolor']='red'
plt.rcParams['savefig.facecolor']='red'
Run Code Online (Sandbox Code Playgroud)