2011-01-26 19 views
54

क्या कोई यह बता सकता है कि आंकड़े के चेहरे रंग को सेट करते समय नीचे दिया गया कोड क्यों काम नहीं करता है?Matplotlib आकृति चेहरा रंग (पृष्ठभूमि रंग)

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") द्वारा उठाया जाता है का उपयोग कर की चौड़ाई निर्दिष्ट करें। हालांकि, चेहरा रंग सेटिंग नहीं उठाई जाती है। क्यूं कर?

आपकी मदद के लिए धन्यवाद।

उत्तर

75

ऐसा इसलिए है क्योंकि savefig आकृति की पृष्ठभूमि के लिए चेहरे रंग को ओवरराइड करता है।

(यह जानबूझकर वास्तव में ... धारणा है कि आप शायद savefig को facecolor kwarg के साथ सहेजा आकृति की पृष्ठभूमि रंग को नियंत्रित करना चाहते हैं, हालांकि है। यह एक भ्रामक और असंगत डिफ़ॉल्ट है!)

सबसे आसान तरीके को सिर्फ fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none') करने के लिए (मैं edgecolor यहाँ निर्दिष्ट करने रहा हूँ क्योंकि वास्तविक आंकड़ा के लिए डिफ़ॉल्ट edgecolor सफेद है, जो आप को बचाया आंकड़ा के चारों ओर एक सफेद सीमा दे देंगे)

आशा है कि मदद करता है!

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

स्पष्टीकरण के लिए धन्यवाद! – Curious2learn

17

मैं अपने प्रारंभिक

fig=figure(facecolor='black') 

इस तरह के साथ रंग मैं चुना पाने के लिए पारदर्शी कीवर्ड का उपयोग करने के लिए किया था। मुझे लगता है कि स्वीकार किए जाते हैं जवाब से भी आसान तरीका बजाय facecolor=fig.get_facecolor() हर बार डालने की, विश्व स्तर पर सिर्फ एक बार उन्हें स्थापित करने के लिए है:

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

savefigfacecolor के लिए अपने स्वयं के पैरामीटर है:

संबंधित मुद्दे