2011-09-22 10 views
19

मेरे पास एक प्लॉट में बहुत सारे ग्राफ हैं जो मैं प्लॉट करना चाहता हूं। मैं सिर्फ matplotlib के साथ शुरू कर दिया है और एक अच्छा तरीका अलग पहचाना रंग का एक बहुत :(हो सकता है कि अधिकतम पर एसवी साथ एचएसवी से अधिक साइकिल उत्पन्न करने के लिए नहीं मिल सकता है?मैटलप्लिब प्लॉट्स के लिए रंगों का बड़ा सेट

मैं

args=[] 
for i,(x,y) in enumerate(data): 
    args.extend([x,y,hsv(i)]) 
plot(*args) 
की तरह कुछ के बारे में सोच रहा हूँ ?

कोई सुझाव :)

उत्तर

26

मुझे लगता है कि आप सही पता नहीं है, सिवाय इसके कि रंग अधिक अलग पहचाना यदि आप रंग मैप hsv संख्या जो रेंज (0,1) पर फैला रहे हैं पारित हो जाएगा:

hsv = plt.get_cmap('hsv') 
hsv(float(i)/(len(data)-1)) 

या, NumPy का उपयोग कर:

colors = hsv(np.linspace(0, 1.0, len(kinds))) 

उदाहरण के लिए:

import datetime as DT 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import scipy.interpolate as interpolate 

dates = [DT.date(year, 9, 1) for year in range(2003, 2009)] 
t = list(map(mdates.date2num, dates)) 
jec = (100, 70, 125, 150, 300, 250) 
plt.plot(dates, jec, 'k.', markersize = 20) 
new_t = np.linspace(min(t), max(t), 80) 
new_dates = map(mdates.num2date, new_t) 
kinds = ('cubic', 'quadratic', 'slinear', 'nearest', 'linear', 'zero', 4, 5) 
cmap = plt.get_cmap('jet') 
colors = cmap(np.linspace(0, 1.0, len(kinds))) 
for kind, color in zip(kinds, colors): 
    new_jec = interpolate.interp1d(t, jec, kind=kind)(new_t) 
    plt.plot(new_t, new_jec, '-', label=str(kind), color=color) 
plt.legend(loc = 'best') 
plt.show() 

enter image description here

+0

ठीक है, मैं देख रहा हूँ। धन्यवाद :) हालांकि ऐसा लगता है कि मेरी matplotlib cm.jet को जानता है (और डॉक्टर अब इसका उल्लेख नहीं करता है)। अब मैं इसे कहां पा सकता हूं? – Gerenuk

+0

ओह, मुझे लगा कि यह matplotlib.pyplot.jet() – Gerenuk

+0

के साथ काम करता है आप 'plt.get_cmap ('jet')' का भी उपयोग कर सकते हैं। मैंने इसे दिखाने के लिए पोस्ट भी संपादित किया है। – unutbu

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