Quelqu'un peut-il expliquer pourquoi le code ci-dessous ne fonctionne pas lors du réglage de la couleur de la figure?
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.
Lorsque je spécifie la hauteur et la largeur de la figure, fig1.set_figheight(11)
fig1.set_figwidth(8.5)
celles-ci sont prises en compte par la commande plt.savefig("trial_fig.png")
. Cependant, le paramètre de couleur faciale n'est pas sélectionné. Pourquoi?
Merci de votre aide.
la source
transparent=True
si vous fournissez unfacecolor
?savefig
a son propre paramètre pourfacecolor
. Je pense qu'un moyen encore plus simple que la réponse acceptée est de les définir globalement une seule fois , au lieu de mettre àfacecolor=fig.get_facecolor()
chaque fois:plt.rcParams['axes.facecolor']='red' plt.rcParams['savefig.facecolor']='red'
la source
Si vous souhaitez changer la couleur d'arrière-plan, essayez ceci:
plt.rcParams['figure.facecolor'] = 'white'
la source