2015-02-10 5 views
16

स्कैटर प्लॉट करते समय मुझे समुद्री रंग कैसे मिल सकता है?matplotlib स्कैटर के साथ रंगों के माध्यम से समुद्री शैवाल चक्र

import matplotlib.pyplot as plt 
import seaborn as sns 
ax=fig.add_subplot(111) 
for f in files: 
    ax.scatter(args) # all datasets end up same colour 
    #plt.plot(args) # cycles through palette correctly 
+0

यह एक 'सुविधा', नहीं एक 'बग' 'scatter' एक' ScalarMappable' को आप प्रत्येक मार्कर जो की तुलना में उपयोग किया जाएगा (एक रंग नक्शे के साथ) के लिए एक अदिश मूल्य प्रदान कर सकते हैं, जिसका मतलब है है स्केलर मान के अनुसार प्रत्येक मार्कर रंग। यह देखते हुए कि रंग चक्र तर्क में 'स्कैटर' भाग लेना मूर्खतापूर्ण/बहुत ही मूर्खतापूर्ण लगता है। एक साइड नोट के रूप में, जब तक कि आप मार्करों के आकार को अलग नहीं कर लेते, तब तक संभवतः 'प्लॉट' का उपयोग करने के लिए कोई लाइन नहीं है (यह तेज़ी से चलेगा)। – tacaswell

+0

साजिश का उपयोग करने के बारे में टिप के लिए धन्यवाद :) मैं सुझाव नहीं दे रहा था कि यह एक बग था, बस यह पूछ रहा था कि यह कैसे करें। – amn41

उत्तर

30

आपको matplotlib को किस रंग का उपयोग करना है, बताना है। उदाहरण के लिए उपयोग करने के लिए,, Seaborn के डिफ़ॉल्ट रंग पैलेट:

import matplotlib.pyplot as plt 
import seaborn as sns 
import itertools 
ax=fig.add_subplot(111) 

palette = itertools.cycle(sns.color_palette()) 

for f in files: 
    ax.scatter(args, color=next(palette)) 

itertools.cycle यकीन है कि हम रंगों के समाप्त न हो और पिछले एक उपयोग करने के बाद फिर से पहले एक साथ शुरू कर देता है।

0

कार्स्टन के उत्तर पर निर्माण करने के लिए, यदि आपके पास रंगों को असाइन करने के लिए बड़ी संख्या में श्रेणियां हैं, तो आप रंगों को एक बहुत बड़े समुद्री शैवाल पैलेट पर ज़िप करना चाहेंगे, उदाहरण के लिए xkcd_palette या crayon_palette .. ध्यान दें कि यह अभ्यास है आम तौर पर a chartjunk anti-pattern: 5-6 से अधिक रंगों का उपयोग आमतौर पर ओवरकिल होता है, और आपको अपने चार्ट प्रकार को बदलने पर विचार करने की आवश्यकता हो सकती है।

import matplotlib.pyplot as plt 
import seaborn as sns 

palette = zip(df['category'].unique(), sns.crayons.values()) 
संबंधित मुद्दे