2010-08-29 10 views
15

matplotlib में, लाइन प्लॉट रंग चक्र स्वचालित रूप से। इन दो लाइन भूखंडों में अलग-अलग रंग होंगे।मैं अलग-अलग रंगों में बार प्लॉट स्वचालित रूप से चक्र कैसे बना सकता हूं?

axes.plot(x1, y) 
axes.plot(x2, y) 

हालांकि, बार भूखंड नहीं हैं। इन दोनों डेटा श्रृंखला में ब्लू बार होंगे।

axes.bar(x1, y) 
axes.bar(x2, y) 

मैं रंगों के एक पूर्वनिर्धारित सेट में स्वचालित रूप से बार प्लॉट चक्र कैसे बना सकता हूं?

उत्तर

4

वैकल्पिक: अपने आंकड़े की शैली पर पूरा नियंत्रण प्राप्त करने के लिए एक टेम्पलेट के रूप में कोई मौजूदा mplstyle का उपयोग करें: https://github.com/matplotlib/matplotlib/tree/master/lib/matplotlib/mpl-data/stylelib

पैरामीटर समायोजित: axes.prop_cycle: साइक्लर ('रंग', [। ...])

लोड अपनी शैली:

from matplotlib import style 
style.use ('PATH TO YOUR MPL STYLE') 

आप अपने या डिफ़ॉल्ट शैली रंग चक्र लगभग किसी भी तरह से एक के बाद आप चाहते हैं कर सकते हैं:

#!/usr/bin/python 
import matplotlib.pyplot as plt 

#data 
x=[1,2,4] 
y=[11,12,8] 
prop_iter = iter(plt.rcParams['axes.prop_cycle']) 

for i in range(0,len(x)): 
    plt.bar(x[i],y[i],color=next(prop_iter)['color']) 

plt.show() 

plt.rcParams [ 'axes.prop_cycle'] सभी चक्र पकड़ लेता है ताकि आप कुंजी का उपयोग कर सही साइक्लर चयन करने की आवश्यकता ['रंग']।

आप इटरेटर निर्माण ड्रॉप और सूची समझ और ज़िप कर एक liners बनाने के लिए कर सकते हैं:

#!/usr/bin/python 
import matplotlib.pyplot as plt 

x=[1,2,4] 
y=[11,12,8] 
prop = plt.rcParams['axes.prop_cycle'] 
[plt.bar(param[0],param[1],color=param[2]['color']) for param in zip(x,y,prop)] 
plt.show() 

enter image description here

3

प्रलेखन से http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.bar

बार भूखंडों पर स्वचालित रूप से चक्र रंग नहीं है, लेकिन आप रंग गुण पास करके सीधे रंग सेट कर सकते हैं। कुछ इस तरह:

colors = ['red', 'blue', 'green'] 
i = -1 
def getCycledColor(): 
    global i, colors 
    if i < len(colors) -1 
     i = i + 1 
     return colors[i] 
    else: 
     i = -1 
axes.bar(x1,y,facecolor=getCycledColor()) 
axes.bar(x2,y,facecolor=getCycledColor()) 

रंग एक पूर्वनिर्धारित सूची से चुना जा सकता है और साइकिल।

+0

कि सिर्फ दो बार भूखंडों, सभी लाल सलाखों के साथ एक और एक सब नीले सलाखों के साथ पैदा करता है (क्योंकि 'getCycledColor()' केवल एक बार कहा जाता है जब 'अक्ष()। बार (..)' कहा जाता है) –

24

कि इन पंक्तियों के साथ कुछ यह तुम्हारे लिए क्या?

#!/usr/bin/python 
from matplotlib import cm 
import matplotlib.pyplot as plt 

#data 
x=[1,2,4] 
y=[11,12,8] 

for i in range(0,len(x)): 
    plt.bar(x[i],y[i],color=cm.jet(1.*i/len(x))) 

plt.show() 

colormaps पर अधिक।

संपादित करें: के लिए this example देखें कि किस प्रकार रंगों की एक पूर्व-निर्धारित समूह से अधिक चक्र के लिए।

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

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