ग्राफ़ पर प्लॉट लाइनों के लिए रंग चुनने के लिए क्या एल्गोरिदम हैं?


19

मैं उन एल्गोरिदम या नियमों में दिलचस्पी रखता हूं, जिन्हें मैं पड़ोसियों से दृश्यमान रूप से अलग रखने के लिए आरजीबी या एचएसवी रंग उत्पन्न करने के लिए प्रोग्रामेटिक रूप से लागू कर सकता हूं

मुझे पता है कि पेशेवर मैपमेकिंग में, एल्गोरिदम या नियम हैं जो यह सुनिश्चित करते हैं कि नक्शे पर आसन्न दो देश एक ही रंग के नहीं हैं। मैं माइक्रोसॉफ्ट ऑफिस एक्सेल के बारे में भी सोच सकता हूं कि प्लॉट लाइनों (लाल, फिर नीला, फिर बैंगनी / नारंगी) के लिए अच्छे टिंट / शेड्स उठाएं।

यहां एक उदाहरण है कि मैं किस बारे में बात कर रहा हूं - मुझे काली पृष्ठभूमि पर 12 लाइनों के लिए रंग उत्पन्न करने की आवश्यकता है। वेब-सेफ RGB कलर कोड्स का उपयोग करके यहाँ के रंग मैंने हाथों से हार्डकोड किए हैं। समस्या तब पैदा होती है जब ये लाइनें ओवरलैप होती हैं - यह बताना मुश्किल है कि क्या कोई बैंगनी, धीरे-धीरे गहरे बैंगनी या बैंगनी रंग की दिख रही है। मैं इन जैसे प्लॉटलाइन के लिए रंगों का उत्पादन करने के लिए एक बेहतर एल्गोरिदम की तलाश कर रहा हूं।

कई प्लॉट लाइनों का रंग उदाहरण है

यहाँ jQuery के लिए फ़्लोट प्लॉटिंग लाइब्रेरी का उपयोग करके एक उदाहरण दिया गया है, इसमें ग्राफ़ के लिए रंगों का अच्छा उत्तराधिकार है: यहाँ छवि विवरण दर्ज करें



ऐसा लगता है कि उन्होंने सिर्फ बेस रंगों को चुना है। और आपके पास इस चार्ट में केवल पांच लाइनें हैं जबकि आपके अन्य उदाहरण में बारह हैं। यदि आप फ़्लोट को अधिक ग्राफ बनाते हैं, तो आप संभवतः इसी तरह की समस्याओं में भाग लेंगे। केवल वही हैं जो कई अलग-अलग रंग हैं और वहां से आपको रंगों को दोहराना होगा और केवल उनके बीच कुछ "दूरी" रखने की कोशिश कर सकते हैं।
थोरस्टेन मुलर

1
हालांकि, एक व्यावहारिक कार्यान्वयन पक्ष से यहां एक बहुत ही रोचक (और अच्छी) समस्या है, मैं स्पष्ट रूप से एक विषय के लिए रंग सेट की पहचान (ग्रीसेकेल, उच्च विपरीत, पेस्टल, रंग अंधा, आदि ...) के साथ देखने का सुझाव दूंगा। उचित अधिकतम संख्या (इससे पहले यह अपठनीय हो जाता है) - 32 या 128 या तो रंग (आवेदन के आधार पर) और अगले रंग की गणना करने के बजाय उस सरणी सूचकांक का उपयोग करें।

जवाबों:


15

मैं एचएसवी या एचएसएल कलर स्पेस का उपयोग करने की सलाह देता हूं, आरजीबी कलर स्पेस की नहीं, क्योंकि एचएसवी और एचएसएल बेहतर रंग बनाने के लिए संरचित हैं जो मनुष्यों को अलग दिखते हैं। आरजीबी में आपके पास अधिक काम होगा (हालांकि रूपांतरण आगे और पीछे मौजूद हैं, आपको उनकी आवश्यकता होनी चाहिए)।

यह एचएसवी / एचएसएल जैसा दिखता है: यहाँ छवि विवरण दर्ज करें

एचएसवी या एचएसएल रंग स्थान का उपयोग करते समय आप मान सकते हैं (बहुत मोटे तौर पर) कि दो रंगों के एच (ह्यू) घटकों के बीच का अंतर रंगों के बीच अवधारणात्मक दूरी का एक अच्छा सन्निकटन है - अर्थात ह्यू में बड़ा परिवर्तन, और अधिक विभिन्न रंग मनुष्यों को देखेंगे। आप S (संतृप्ति) और L / V (लपट / मान) के साथ खेलने की कोशिश कर सकते हैं और साथ ही कुछ और बहुत अलग रंगों को निकाल सकते हैं, लेकिन वे समान मूल्य परिवर्तन के लिए अलग-अलग नहीं दिखेंगे।

आपको आवश्यक विभिन्न रंगों की संख्या के आधार पर, आप ह्यू-स्पेस को विभिन्न रंगों की संख्या में विभाजित कर सकते हैं। यदि उदाहरण के लिए आपके पास 256 मानों की एक श्रेणी है और आपको 16 अलग-अलग रंगों की आवश्यकता है, तो आपका पहला रंग (0, 128, 128) हो सकता है, आपका दूसरा (16, 128, 128) और इसी तरह। मैंने कुछ मनमाने ढंग से एस / एल मूल्यों को बीच में स्मैक के रूप में उठाया क्योंकि यह आमतौर पर हल्का और संतृप्त होगा ताकि रंग अंतर स्पष्ट रूप से देखा जा सके। यह प्रणाली सरल है, और माना जाता है कि आपको अपने ग्राफ़ / मैप में रंगों की निकटता के बारे में कुछ भी जानने की आवश्यकता नहीं है।

यदि आप पहले से नहीं जानते हैं कि आपको कितने अलग-अलग रंगों की आवश्यकता है, लेकिन आप ऊपरी सीमा जानते हैं, और रंग सीमा को रंगों में विभाजित करते हुए उस ऊपरी सीमा को ध्यान में रखते हैं जैसा कि ऊपर अभी भी आपको अवधारणात्मक रूप से अलग-अलग रंग देता है तो आप उसी प्रणाली का उपयोग कर सकते हैं ऊपरी सीमा।

यदि आपको (अलग-अलग) रंगों की आवश्यकता होती है, तब भी आप बहुत समान या समान रंगों का उपयोग करके दूर हो सकते हैं, जब तक कि वे ग्राफ़ के अन्य तत्वों के पास दिखाई नहीं देते हैं जिनके समान रंग हैं। यह आपके द्वारा दिए जा रहे ग्राफ़ में आपके आसन्न स्थिति को जानने की आवश्यकता है और यह हमेशा सीधा नहीं हो सकता है, और फिर भी यह एक अच्छा विचार नहीं हो सकता है क्योंकि डुकलिंग टिप्पणी में इंगित करता है: यह दर्शकों को भ्रमित कर सकता है कि एक ही रंग का उपयोग किया जाता है दो अलग-अलग अवधारणाओं के लिए ग्राफ में दो बार।

तो अंत में सबसे जटिल स्थिति में आपका ग्राफ़ पर्याप्त रूप से जटिल है कि आपके पास यह सुनिश्चित करने के लिए पर्याप्त रंग स्थान नहीं है कि आप उन रंगों के साथ अलग-अलग तत्वों के साथ समाप्त न हों जो उपरोक्त प्रणाली का उपयोग करने के समान हैं। इस मामले में आपको अपने विज़ुअलाइज़ेशन ग्राफ़ के तत्वों का एक आसन्न ग्राफ बनाने की आवश्यकता है। यहाँ आसन्न फजी अवधारणा है - आपको इसे अपनी वास्तविक स्थिति के लिए सही ढंग से परिभाषित करना होगा। उदाहरण के लिए आपके दूसरे उदाहरण में 12 जुलाई के डेटा में एक चोक बिंदु है जहां हर रंग हर दूसरे से सटे हुए हैं। एक दृष्टिकोण जो आपकी मदद कर सकता है यदि आप आसन्न ग्राफ का निर्माण कर सकते हैं तो ग्राफ रंग की समस्या है - ऐसी लाइब्रेरी हैं जो आपकी मदद कर सकती हैं - उदाहरण के लिए C ++ में बढ़ावा देने का ग्राफ


चौराहा होने या न होने के बावजूद, आप नहीं चाहते कि एक ही ग्राफ पर अलग-अलग चीजों का प्रतिनिधित्व करने वाले एक ही रंग (यदि यह आप का मतलब है), तो भ्रम के लिए बहुत अधिक जगह है और आप यह पता लगाने में सक्षम नहीं हो सकते हैं कि कौन सा है , इसलिए ग्राफ रंग असंबंधित है। यदि आपने ध्यान नहीं दिया है, तो प्रत्येक पंक्ति में केवल एक ही रंग होता है और इसमें जुड़े बिंदुओं का एक क्रम होता है।
डुकलिंग

@ डुकलिंग - आप मेरी बात को गलत समझे। कुछ बिंदु पर, कोई फर्क नहीं पड़ता कि आप कितनी सावधानी से चुनते हैं, अगर आपको कई अलग-अलग रंगों की आवश्यकता होती है, तो आपको ऐसे रंग होने लगेंगे, जो समान दिखते हैं (उदाहरण के लिए सवाल में पहली छवि में)। उस बिंदु पर एक भोला-भाला लेकिन सरल कार्यान्वयन जैसा कि मैंने सुझाव दिया था कि उन रंगों को एक साथ रखा जा सकता है, यह देखना मुश्किल है कि क्या हो रहा है। जब आप ग्राफ़ रंग का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि आप ग्राफ़ पर "करीब" लाइनों के लिए दूर के रंगों का उपयोग कर रहे हैं।
जोरिस टिम्मरमैन

@ डुकलिंग - मैंने अपना उत्तर संपादित किया है कि आपकी टिप्पणी को शामिल करने के लिए कि एक ही रंग का पुन: उपयोग बुरा क्यों हो सकता है।
जोरिस टिम्मरमैन

1

उस मामले के लिए जहां आपको पहले से पता नहीं है कि आपको एक और दिलचस्प एल्गोरिदम की आवश्यकता होगी कितने अलग-अलग रंगों में गोल्डन अनुपात एल्गोरिदम है

बस अपने पसंदीदा रंग पर शुरू करें और फिर सुनहरे कोण (137.5 °) के चरणों में रंग पहिया के चारों ओर जाएं । इस कोण के साथ आप यह सुनिश्चित करेंगे कि रंग के पहिये के चारों ओर हर दृढ़ संकल्प के बाद आपके नए रंग आपके द्वारा पहले से बनाए गए रंगों के बीच पड़ जाएँ।

कुछ फूलों में लगातार फूलों के बीच का कोण स्वर्ण कोण है।

(छवि विकिपीडिया से )


0

मैंने थोड़ा प्रयोग किया है और पाया है कि एचएसएल / एचएसवी के साथ भी अच्छा, निर्विवाद, शांत (सभी व्यक्तिपरक, लेकिन ...) के लिए एक सभ्य एल्गोरिथ्म प्राप्त करना काफी आसान नहीं है, फिर भी इसके विपरीत रंग हैं। दर्शक के कुछ हिस्से नेत्रहीन समान हैं - esp। हरा-नीला सेक्शन। इसलिए मुझे कुछ हल्कापन भिन्नता जोड़ना पड़ा।

यहाँ मैं के साथ समाप्त हो गया है:

यहाँ छवि विवरण दर्ज करें

$.plot($('#application_pie'), data_application_pie, {
    series: { pie: { show: true,  innerRadius: 0.55, offset: { top: 0, left: -120 } } },
    colors: $.map( data_application_pie, function (item, index) {
        return jQuery.Color({
            hue: (index*0.95*360/data_application_pie.length),
            saturation: 0.95,
            //lightness: (index%2/-4)+0.55, alpha: 1
            lightness: ((index%4 == 3 ? 1:0)/-4)+0.55, alpha: 1
        }).toHexString();
    })
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.