Matplotlib рисунок facecolor (цвет фона)
может кто-нибудь объяснить, почему код ниже не работает при установке 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)
они подобраны командой plt.savefig("trial_fig.png")
. Однако настройка facecolor не подобрана. Зачем?
Спасибо за вашу помощь.
3 ответа:
потому что
savefig
переопределяет цвет лица для фона фигуры.(это преднамеренно, на самом деле... Предполагается, что вы, вероятно, захотите контролировать цвет фона сохраненной фигуры с помощью
facecolor
kwarg кsavefig
. Это запутанный и непоследовательный дефолт, хотя!)самый простой обходной путь-это просто сделать
fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')
(Я указываю edgecolor здесь, потому что по умолчанию edgecolor для фактического рисунка белый, который будет дайте вам белую рамку вокруг сохраненной фигуры)надеюсь, что это поможет!