मेरे एप्लिकेशन में एक लाइन ग्राफ़ है जो एक बार में 20 या अधिक डेटासेट प्रदर्शित कर सकता है, लेकिन आमतौर पर यह 5 से कम प्रदर्शित होगा। मैं प्रत्येक डेटासेट को एक अद्वितीय रंग रखना चाहता हूं।मैं विपरीत रंग कैसे उत्पन्न करूं?
वर्तमान में मैं यह कर रहा हूँ:
setHsl(i * 255.0/session->getNumDataSets(), 255, 128);
यह काम करता है, लेकिन नकारात्मक पक्ष यह है कि लगातार दो डेटासेट बहुत समान रंग होंगे है। मुझे यह अच्छा लगेगा कि उत्पन्न प्रत्येक रंग जेनरेट किए गए सभी पिछले रंगों के मुकाबले जितना संभव हो उतना विपरीत होगा।
रंग उत्पन्न करने का एक बेहतर तरीका क्या है?
double pos = 0;
if (wheel.size() == 0)
{
wheel.append(0.0);
wheel.append(1.0);
}
else
{
double gap = 0;
double hi = 0;
double lo = 0;
for (int i = 0; i < wheel.size() - 1; i++)
{
double g = wheel[i + 1] - wheel[i];
if (g > gap)
{
gap = g;
lo = wheel[i];
hi = wheel[i + 1];
}
}
pos = (hi - lo)/2.0 + lo;
wheel.append(pos);
qSort(wheel);
}
QColor c;
c.setHsl(pos * 255.0, 255, 128);
return c.toRgb();
मेरा विचार है कि पहले रंग, रंग चक्र पर स्थिति 0 है:
यहाँ मेरी दूसरा प्रयास है। फिर प्रत्येक निम्नलिखित रंग के लिए, मैं कलर व्हील के चारों ओर जाता हूं, रंगों के बीच सबसे बड़ा अंतर ढूंढता हूं, और एक बार जब मैंने इसे पाया, तो मैं उस अंतर में एक नया रंग डालता हूं। ऐसा लगता है कि यह बेहतर काम करता है, लेकिन फिर भी सही नहीं है, क्योंकि अंतराल कम हो जाने के बाद, लगातार रंग समान होते हैं।
अधिकतम अनुबंध आमतौर पर शुद्ध रंगों (चमकदारता = 120, संतृप्ति = 240) के साथ किया जाता है, और वास्तव में आपके जैसा ह्यू चुनते हैं। – Wrikken
वह अब इस तरह के रंग को नहीं चुनना चाहता क्योंकि आसन्न रंग काफी समान हैं। – Reinderien
मैंने अभी भी एक ब्लॉग पोस्ट को रेडडिट या हैकर समाचार पर देखा है जो इस समस्या को अच्छी तरह से हल करता है, लेकिन अब मुझे यह नहीं मिल रहा है। –