Matplotlib figürü yüz rengi (arka plan rengi)


91

Birisi, şeklin yüz rengini ayarlarken aşağıdaki kodun neden çalışmadığını açıklayabilir mi?

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.

Bunları kullanarak şeklin yüksekliğini ve genişliğini belirttiğimde fig1.set_figheight(11) fig1.set_figwidth(8.5)komutla alınıyor plt.savefig("trial_fig.png"). Ancak, yüz rengi ayarı alınmaz. Neden?

Yardımınız için teşekkürler.

Yanıtlar:


130

Bunun nedeni savefig, şeklin arka planı için yüz rengini geçersiz kılar.

(Bu kasıtlı, aslında ... Varsayım, muhtemelen kaydedilen şeklin arka plan rengini facecolorkwarg ile kontrol etmek isteyeceğinizdir savefig. Yine de kafa karıştırıcı ve tutarsız bir varsayılandır!)

En kolay çözüm sadece yapmaktır fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')(Burada kenar rengini belirtiyorum çünkü gerçek şeklin varsayılan kenar rengi beyazdır, bu size kaydedilen şeklin etrafında beyaz bir kenarlık verecektir)

Umarım yardımcı olur!


30

Baş harfimle seçtiğim rengi elde etmek için şeffaf anahtar kelimeyi kullanmak zorunda kaldım

fig=figure(facecolor='black')

bunun gibi:

savefig('figname.png', facecolor=fig.get_facecolor(), transparent=True)

4
transparent=TrueBir sağlarsanız neden kullanıyorsunuz facecolor?
Alexis.Rolland

27

savefigiçin kendi parametresi vardır facecolor. Bence kabul edilen yanıttan daha kolay bir yol , her defasında yazmak yerine, bunları küresel olarak yalnızca bir kez ayarlamaktır facecolor=fig.get_facecolor():

plt.rcParams['axes.facecolor']='red'
plt.rcParams['savefig.facecolor']='red'

0

Arka plan rengini değiştirmek istiyorsanız, şunu deneyin:

plt.rcParams['figure.facecolor'] = 'white'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.