2012-12-20 18 views
7

मैं कई बार के साथ बार-ग्राफ़ उत्पन्न करने के लिए पांडा और मैटलप्लिब का उपयोग कर रहा हूं।matplotlib के लिए रंग चयन जो अच्छी तरह से प्रिंट करता है

मुझे पता है कि चयनित रंगों की सूची (How to give a pandas/matplotlib bar graph custom colors) के माध्यम से कैसे चक्र करना है। सवाल यह है कि कौन से रंग चुनने के लिए ताकि मेरा ग्राफ एक पेपर पर अच्छी तरह से प्रिंट हो (यह एक शोध पत्र के लिए है)। जो मुझे सबसे ज्यादा रूचि है, वह कॉलम और सुखद दिखने वाले रंगों के चयन के बीच पर्याप्त विपरीत है। मैं ग्रे-स्केल या सिंगल-ह्यू रंगकेम्स के बजाय कई रंग रखना चाहता हूं।

क्या उन लोगों का चयन करने के लिए कोई पूर्व निर्धारित योजनाएं हैं?

+2

'cubehelix' – tacaswell

+0

Cubehelix में नज़र भयानक है। मैंने डेव ग्रीन से पेपर पढ़ा। वास्तव में मैं क्या चाहता था। पहली कोशिश पर उत्कृष्ट दिखने और प्रिंटिंग ग्राफ मिल गया। अगर आपकी टिप्पणी एक जवाब था तो मैं इसे स्वीकार करूंगा। – vkontori

+0

उत्तर के रूप में जोड़ा गया – tacaswell

उत्तर

11

1.5 matplotlib में 4 नए तर्क से तैयार किया गया है रंग नक्शे के साथ जहाज जाएगा:

  • 'viridis' (2,0 में डिफ़ॉल्ट रंग नक्शा होगा)
  • 'magma'
  • 'plasma'
  • 'inferno'

इन रंगीन मानचित्रों को डिजाइन करने की प्रक्रिया https://youtu.be/xAoljeRJ3lU में प्रस्तुत की गई है।

enter image description here

इस प्रक्रिया के लिए विकसित उपकरण के द्वारा pip install viscm


स्थापित किया जा सकता मैं cubehelix रंग नक्शा सुझाव है।यह designed दोनों रंग और ग्रेस्केल

5

मुझे पूर्व निर्धारित योजनाओं से अवगत नहीं है। मैं आमतौर पर प्रकाशन भूखंडों के लिए कुछ रंगों का उपयोग करता हूं। मैं ज्यादातर ध्यान में दो बातें ले जब रंग चुनने:

  1. रंग-अंधापन: विकिपीडिया पर this पेज रंग है कि सबसे अधिक रंग-अंधे लोगों के लिए अलग पहचानी चुनने के बारे में अच्छा जानकारी के बहुत सारे है। यदि आप "संपादकों के लिए सुझाव" अनुभाग पर ध्यान देते हैं, तो एक बार जब आप दिशानिर्देशों को ध्यान में रखते हैं तो रंगों के केवल कुछ सेट उपलब्ध होते हैं। (अंगूठे का एक अच्छा नियम कभी लाल और हरा मिश्रण नहीं करना है!) आप यह देखने के लिए लिंक की गई रंग-अंधा सिमुलेटर का भी उपयोग कर सकते हैं कि आपकी साजिश अच्छी तरह से दिखाई देगी या नहीं।
  2. ल्यूमिनेंस: मेरे क्षेत्र में अधिकांश पत्रिकाएं डिफ़ॉल्ट रूप से बी & डब्ल्यू में प्रकाशित होंगी। हालांकि अधिकांश लोग ऑनलाइन कागजात पढ़ते हैं, फिर भी मैं यह सुनिश्चित करना चाहता हूं कि ग्रेस्केल में मुद्रित होने पर भूखंडों को समझा जा सके। तो मैं अलग-अलग चमक वाले रंगों का उपयोग करने की देखभाल करता हूं। परीक्षण करने के लिए, उत्पादित छवि को केवल विलुप्त करने का एक अच्छा तरीका है, और आपको ग्रेस्केल में मुद्रित होने पर कैसा दिखता है इसका एक अच्छा विचार होगा। कई मामलों में (विशेष रूप से रेखा या स्कैटर प्लॉट), मैं सेट के बीच अंतर करने के लिए रंग की तुलना में अन्य चीजों का भी उपयोग करता हूं (उदाहरण के लिए लाइन शैलियों, विभिन्न मार्कर)।

यदि matplotlib प्लॉट्स में कोई रंग निर्दिष्ट नहीं है, तो इसमें रंगों का एक डिफ़ॉल्ट सेट होता है जो चक्र के माध्यम से होता है। This answer में रंगों के उस डिफ़ॉल्ट सेट को बदलने के तरीके पर एक अच्छी व्याख्या है। आप इसे अपने पसंदीदा रंगों के सेट में कस्टमाइज़ कर सकते हैं, इसलिए भूखंड बदले में उनका उपयोग करेंगे।

18

तो अपनी आवश्यकताओं के "रंग के बहुत सारे" और कर रहे हैं में सही चमक आदेश है ठीक है, "जब मुद्रित कोई दो रंग एक ही ग्रेस्केल मूल्य के लिए नक्शे चाहिए"? दूसरे मानदंडों को किसी भी "अनुक्रमिक" कोलोमाप्स द्वारा पूरा किया जाना चाहिए (जो चमकदार रूप से चमक में वृद्धि या कमी)। मुझे लगता है कि matplotlib में सभी विकल्पों के बाहर, आप cubehelix (पहले ही उल्लेख किया), gnuplot, और gnuplot2 साथ छोड़ दिया जाता है:

3 colormaps, showing luminance and hue

सफेद लाइन, प्रत्येक रंग की चमक है, तो आप देख सकते हैं कि प्रत्येक मुद्रित होने पर रंग एक अलग ग्रेस्केल मान पर मैप करेगा। ब्लैक लाइन रंग है, जो विभिन्न रंगों के माध्यम से चक्र दिखाती है।

ध्यान दें कि क्यूबेलिक्स वास्तव में एक फ़ंक्शन (from matplotlib._cm import cubehelix) है, और आप हेलिक्स के पैरामीटर को अधिक व्यापक रूप से भिन्न रंग, as shown here बनाने के लिए समायोजित कर सकते हैं। दूसरे शब्दों में, क्यूबेलिक्स एक रंगरूप नहीं है, यह रंगरूप का एक परिवार है। यहाँ 2 रूपों हैं:

enter image description here

enter image description here

कम बेतहाशा-अलग रंग के लिए (कई बातों के लिए अधिक सुखद है, लेकिन अपने बार ग्राफ़ के लिए शायद नहीं), हो सकता है ColorBrewer 3-रंग नक्शे का प्रयास करें, YlOrRd, PuBuGn, YlGnBu:

3 colormaps with monotonic luminance but less hue variation

https://www.flickr.com/photos/omegatron/7298887952/

मैं बार ग्राफ की पहचान करने के लिए केवल इस रंग का उपयोग करने की अनुशंसा नहीं करता हूं। आपको हमेशा प्राथमिक लेबल के रूप में टेक्स्ट लेबल्स का उपयोग करना चाहिए। यह भी ध्यान रखें कि इनमें से कुछ, सफेद सलाखों कि पूरी तरह से पृष्ठभूमि के साथ मिश्रण का उत्पादन क्योंकि वे हीटमैप के लिए हैं, चार्ट नहीं रंग:

from matplotlib import pyplot as plt 
import pandas, numpy as np # I find np.random.randint to be better 

# Make the data 
x = [{i:np.random.randint(1,5)} for i in range(10)] 
df = pandas.DataFrame(x) 

# Make a list by cycling through the colors you care about 
# to match the length of your data. 
cmap = plt.get_cmap('cubehelix') 
indices = np.linspace(0, cmap.N, len(x)) 
my_colors = [cmap(int(i)) for i in indices] 

# Specify this list of colors as the `color` option to `plot`. 
df.plot(kind='bar', stacked=True, color=my_colors) 

gnuplot bar graph

gnuplot2 bar graph

cubehelix bar graph

YlGnBu bar graph

और ये नए लोग हैं:

new guys colorbars

viridis bar graph

+0

क्या आप अपने उत्तर में एक नया नोट जोड़ सकते हैं यहां नए रंग के नक्शे? मुझे पता है कि मैं इसे खुद ही संपादित कर सकता हूं, लेकिन यह अशिष्ट लगता है। – tacaswell

+0

@tcaswell किया :) क्या आप मुझे http://stackoverflow.com/q/31888825/125507 पर कोई सलाह दे सकते हैं? – endolith