2010-06-10 8 views
11

में दिए गए colormap से रंग जनरेटर बनाएं मेरे पास लाइनों की एक श्रृंखला है जिसे प्रत्येक को अलग रंग के साथ प्लॉट करने की आवश्यकता है। प्रत्येक पंक्ति वास्तव में कई डेटा सेट (सकारात्मक, नकारात्मक क्षेत्र इत्यादि) से बना है और इसलिए मैं एक जनरेटर बनाने में सक्षम होना चाहता हूं जो एक स्पेक्ट्रम में एक समय में एक रंग खिलाएगा, उदाहरण के लिए gist_rainbow मानचित्र shown herematplotlib

मैं निम्नलिखित काम करता है,

from pylab import * 

NUM_COLORS = 22 

mp = cm.datad['gist_rainbow'] 
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS) 
... 
# Then in a for loop 
    this_color = get_color(float(i)/NUM_COLORS) 

इसके अलावा पाया है लेकिन यह बहुत ही जटिल और अधिक याद करने के लिए महत्वपूर्ण बात यह मुश्किल लगता है, यह gist_rainbow मानचित्र में रंगों की रेंज को कवर नहीं करता, मैं एक मानचित्र को फिर से परिभाषित करने के लिए है ।

शायद जनरेटर ऐसा करने का सबसे अच्छा तरीका नहीं है, यदि ऐसा है तो स्वीकार्य तरीका क्या है?

उत्तर

18
एक विशिष्ट रंग मैप से सूचकांक रंग करने के लिए

आप का उपयोग कर सकते हैं:

import pylab 
NUM_COLORS = 22 

cm = pylab.get_cmap('gist_rainbow') 
for i in range(NUM_COLORS): 
    color = cm(1.*i/NUM_COLORS) # color will now be an RGBA tuple 

# or if you really want a generator: 
cgen = (cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS)) 
+0

: नमस्कार, मैं आप से पूछना करने के लिए कैसे मैं अपने program.I में इसका उपयोग कर सकते उदाहरण कोशिकाओं जो है पूर्णांक मूल्यों (खाली के लिए है चाहता था = 0, पूर्ण = 1 ..)। मैं इसे "रिक्त" रंग 'लाल' से जोड़ सकता हूं, रंगीन सफेद से भरा हुआ आदि। मेरे पास एक ऐसा कार्य है जिसमें मैं साजिश बना देता हूं ".... im = plt.imshow (mydata, cmap = plt.get_cmap ('gist_earth')) "मुझे उपरोक्त को कैसे लागू करना चाहिए? (अगर हम वही बात कहते हैं)। धन्यवाद! – George

+0

@ जॉर्ज: जैसा कि आप इसका वर्णन करते हैं, मुझे यकीन नहीं है कि यह आपके लिए क्यों काम नहीं करता है। शायद एक छोटे से उदाहरण के साथ एक पूर्ण प्रश्न पोस्ट करें। – tom10

+0

: यदि आप यहां देख सकते हैं http://stackoverflow.com/questions/8929456/how-to-create-a-movie-in-relation-to-matlab (अद्यतन भाग पर) जहां मैं ग्राफ बना सकता हूं। कैसे हो सकता है मैं आपका उदाहरण लागू करता हूं? (यदि आप जोर देते हैं कि मैं एक नया उत्तर पोस्ट करूंगा) धन्यवाद! – George