গ্রাফগুলিতে প্লট লাইনের জন্য রং বাছাই করার জন্য কোন অ্যালগরিদম রয়েছে?


19

প্রতিবেশীদের থেকে দৃশ্যমান স্বতন্ত্র রাখার জন্য প্লটলাইনগুলির জন্য আরজিবি বা এইচএসভি রঙ উত্পন্ন করার জন্য আমি প্রোগ্রামগতভাবে কী অ্যালগরিদম বা বিধিগুলি প্রয়োগ করতে পারি তাতে আমি আগ্রহী ।

আমি জানি যে পেশাদার মানচিত্র তৈরির ক্ষেত্রে, অ্যালগরিদম বা নিয়ম রয়েছে যা নিশ্চিত করে যে কোনও মানচিত্রে দুটি সংলগ্ন দেশ একই রঙ নয়। মাইক্রোসফ্ট অফিস এক্সেলকে প্লট লাইনের জন্য ভাল টিন্টগুলি / শেডগুলি বেছে নেওয়ার হিসাবে ভাবতে পারি (লাল, নীল, তারপর বেগুনি / কমলা)।

আমি যা বলছি তার একটি উদাহরণ এখানে - আমার একটি কালো পটভূমিতে 12 লাইনের জন্য রঙ উত্পন্ন করতে হবে। এখানকার রঙগুলি আমি ওয়েব-সেফ আরজিবি কালার কোডগুলি হাতে হাতে হার্ডকোড করেছি। সমস্যাগুলি দেখা দেয় যখন এই রেখাগুলি ওভারল্যাপ হয় - এটি বেগুনি, কিছুটা গাer় বেগুনি বা বেগুনি দেখছে কিনা তা বলা শক্ত। আমি এই জাতীয় প্লটলাইনগুলির জন্য রঙ উত্পাদন করতে আরও ভাল অ্যালগরিদম খুঁজছি।

একাধিক প্লট লাইন রঙ উদাহরণ

এখানে jQuery জন্য ফ্লোট প্লটিং লাইব্রেরি ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে, এতে গ্রাফের জন্য রঙের উত্তরাধিকার রয়েছে: এখানে চিত্র বর্ণনা লিখুন


2
এখানে দুই প্রাসঙ্গিক প্রশ্ন: programmers.stackexchange.com/questions/44929/... এবং stackoverflow.com/questions/470690/...
Frederik Deweerdt

দেখে মনে হচ্ছে তারা কেবল বেস রঙগুলি বেছে নিয়েছে। এবং এই চার্টটিতে আপনার কেবল পাঁচটি লাইন রয়েছে যখন আপনার অন্য উদাহরণে বারোটি রয়েছে। আপনি যদি ফ্লোটের আরও গ্রাফ রাখতে দিতেন তবে সম্ভবত আপনি একই রকম সমস্যায় পড়তে পারেন। কেবলমাত্র অনেকগুলি বিভিন্ন রঙ রয়েছে এবং সেখান থেকে আপনাকে ছায়ার পুনরাবৃত্তি করতে হবে এবং কেবলমাত্র তাদের মধ্যে কিছু "দূরত্ব" থাকার চেষ্টা করতে পারেন।
থারস্টেন মোলার

1
যদিও এখানে একটি বাস্তবিক বাস্তবায়ন দিক থেকে খুব আকর্ষণীয় (এবং ভাল) সমস্যা রয়েছে, আমি স্ট্রোঞ্জলি কোনও থিমের জন্য রঙ সেট সনাক্ত করার পরামর্শ দিচ্ছি (গ্রেস্কেল, হাই কনট্রাস্ট, পেস্টেলস, কালার ব্লাইন্ড, ইত্যাদি ...) দিয়ে with যুক্তিসঙ্গত সর্বাধিক সংখ্যা (এটি অপঠনযোগ্য হওয়ার আগে) - 32 বা 128 বা তাই রঙ (প্রয়োগের উপর নির্ভর করে) এবং পরবর্তী রঙ গণনা করার চেয়ে সেই অ্যারে সূচকটি ব্যবহার করুন।

উত্তর:


15

আমি এইচএসভি বা এইচএসএল রঙের স্পেসগুলি ব্যবহার করার পরামর্শ দিচ্ছি, আরজিবি রঙের স্থান নয়, কারণ এইচএসভি এবং এইচএসএল মানুষের চেয়ে পৃথক দেখতে রঙ তৈরি করার জন্য আরও ভাল কাঠামোযুক্ত। আরজিবিতে আপনার আরও কাজ হবে (যদিও রূপান্তরগুলি আগে এবং আগে উপস্থিত থাকে, আপনার যদি তাদের দরকার হয়)।

এইচএসভি / এইচএসএল দেখতে দেখতে এটির মতো: এখানে চিত্র বর্ণনা লিখুন

এইচএসভি বা এইচএসএল রঙের স্থানটি ব্যবহার করার সময় আপনি ধরে নিতে পারবেন (খুব মোটামুটিভাবে) যে দুটি রঙের এইচ (হিউ) উপাদানগুলির মধ্যে পার্থক্যটি রঙগুলির মধ্যে বোধগম্য দূরত্বের একটি ভাল আনুমানিকতা the অর্থাত্ হ'রে পরিবর্তনের পরিমাণ তত বেশি বিভিন্ন রঙ মানুষের তাকান হবে। আপনি এস (স্যাচুরেশন) এবং এল / ভি (লাইটনেস / মান) এর সাথে খেলার চেষ্টা করতে পারেন এবং আরও কয়েকটি আরও বিভিন্ন রঙ বের করতে চেষ্টা করতে পারেন তবে এগুলি হিউ পরিবর্তিত হিসাবে একই মান পরিবর্তনের জন্য আলাদা হিসাবে দেখাবে না।

আপনার প্রয়োজনীয় স্বতন্ত্র রঙের সংখ্যার উপর নির্ভর করে আপনি হিউ-স্পেসকে বিভিন্ন রঙের সংখ্যায় ভাগ করতে পারেন। উদাহরণস্বরূপ, যদি আপনার 256 টি মানের মান রয়েছে এবং আপনার 16 টি পৃথক রঙের প্রয়োজন হয়, তবে আপনার প্রথম রঙটি হতে পারে (0, 128, 128), আপনার দ্বিতীয় (16, 128, 128) এবং এই জাতীয়। আমি কিছুটা নির্বিচারে এখানে মাঝখানে S / L মানগুলি স্ম্যাককে বেছে নিয়েছি কারণ এটি সাধারণত হালকা এবং রঙের পার্থক্যগুলি পরিষ্কারভাবে দেখতে যথেষ্ট পরিমাণে স্যাচুরেটেড হয়। এই সিস্টেমটি সহজ, এবং ধরে নিয়েছে যে আপনার গ্রাফ / মানচিত্রে রঙের সংলগ্নতা সম্পর্কে আপনার কিছুই জানতে হবে না।

আপনার যদি আরও কতগুলি পৃথক রঙের প্রয়োজন আগেই না জানা থাকে তবে আপনি উপরের সীমাটি জানেন এবং উপরের সীমাটি মাথায় রেখে হিউ রেঞ্জটিকে রঙগুলিতে বিভক্ত করা আপনাকে এখনও যথাযথভাবে ভিন্ন ভিন্ন রঙ দেয় তবে আপনি একই সিস্টেমটি ব্যবহার করতে পারবেন উপরের সীমা।

আপনার যদি (খুব) আলাদা আলাদা রঙের প্রয়োজন হয় তবে আপনি এখনও একই রকম বা এমনকি একই রং ব্যবহার করে পালিয়ে যেতে পারবেন, যতক্ষণ না তারা গ্রাফের অন্যান্য উপাদানগুলির সাথে একইরকম রঙের উপস্থিত না হয়। এর জন্য আপনার যে গ্রাফটি উপস্থাপন করছেন তা আপনার সংলগ্ন পরিস্থিতিটি জানতে হবে এবং সর্বদা সোজা নাও হতে পারে, এবং তারপরেও ডিউক্লিং মন্তব্যগুলিতে উল্লেখ করেছেন: এটি দর্শকদের বিভ্রান্ত করতে পারে যে একই রঙ ব্যবহার করা হয়েছে দুটি ভিন্ন ধারণার জন্য গ্রাফে দুটিবার twice

সুতরাং অবশেষে সবচেয়ে জটিল পরিস্থিতিতে আপনার গ্রাফটি যথেষ্ট জটিল যে উপরের সিস্টেমটি ব্যবহার করে রঙের সাথে স্বতন্ত্র উপাদানগুলি শেষ না হওয়া নিশ্চিত করার জন্য আপনার পর্যাপ্ত রঙের স্থান নেই। এই ক্ষেত্রে আপনাকে আপনার ভিজ্যুয়ালাইজেশন গ্রাফের উপাদানগুলির একটি সংলগ্ন গ্রাফ তৈরি করতে হবে। এখানে সংলগ্নতা একটি अस्पष्ट ধারণা - আপনার সত্যিকারের পরিস্থিতির জন্য আপনাকে এটিকে সঠিকভাবে সংজ্ঞা দিতে হবে। উদাহরণস্বরূপ আপনার দ্বিতীয় উদাহরণে 12 জুলাইয়ের ডেটার একটি দমবন্ধ পয়েন্ট রয়েছে যেখানে প্রতিটি রঙ একে অপরের সাথে সংযুক্ত থাকে। আপনি যদি সংলগ্ন গ্রাফটি তৈরি করতে পারেন তবে আপনাকে সাহায্য করতে পারে এমন একটি পদ্ধতি হ'ল গ্রাফ বর্ণের সমস্যা - এমন লাইব্রেরি রয়েছে যা আপনাকে সহায়তা করতে পারে - উদাহরণস্বরূপ: C ++ তে গ্রাফ :: গ্রাফ


ছেদ আছে কিনা তা নির্বিশেষে, আপনি একই রঙগুলি একটি গ্রাফের বিভিন্ন জিনিসের প্রতিনিধিত্ব করতে চান না (এটি যদি আপনি বোঝাতে চান) তবে বিভ্রান্তির খুব বেশি জায়গা আছে এবং আপনি কোনটি আবিষ্কার করতে পারবেন না সুতরাং গ্রাফের রঙটি সম্পর্কিত নয়। আপনি যদি খেয়াল না করেন, প্রতিটি লাইনে কেবল একটি একক রঙ থাকে এবং এতে সংযুক্ত পয়েন্টগুলির ক্রম থাকে।
ডিউক্লিং

@ ডুকলিং - আপনি আমার বক্তব্য ভুল বুঝেছেন। এক পর্যায়ে, আপনি যেভাবে সাবধানতার সাথে বেছে নিচ্ছেন তা বিবেচনা না করেই, আপনার যদি বিভিন্ন রঙের প্রয়োজন হয় তবে আপনার বর্ণ একই রকম দেখতে শুরু করবে (উদাহরণস্বরূপ প্রশ্নের প্রথম চিত্রের বেগুনি)। এই মুহুর্তে আমার পরামর্শ মতো একটি নির্লজ্জ তবে সাধারণ বাস্তবায়নগুলি সেই রঙগুলি একসাথে রেখে দিতে পারে, যা চলছে তা দেখার পক্ষে এটি শক্ত হয়ে যায়। আপনি যখন গ্রাফের "ক্লোজ" লাইনের জন্য দূরবর্তী রং ব্যবহার করছেন তা নিশ্চিত করতে আপনি যখন গ্রাফ রঙিন ব্যবহার করতে পারেন তখনই।
জরিস টিমারম্যানস

@ ডুকলিং - একই রঙের পুনরায় ব্যবহার কেন খারাপ হতে পারে সে সম্পর্কে আপনার মন্তব্যকে অন্তর্ভুক্ত করার জন্য আমি আমার উত্তর সম্পাদনা করেছি।
জরিস টিমারম্যানস

1

যে ক্ষেত্রে আপনি আগে থেকে জানেন না যে আপনাকে আরও একটি আকর্ষণীয় অ্যালগরিদমের জন্য আরও কতগুলি স্বতন্ত্র রঙের প্রয়োজন হবে তা হ'ল গোল্ডেন রেশিও অ্যালগরিদম

আপনার প্রিয় রঙটি কেবল শুরু করুন এবং তারপরে সোনালি কোণের (137.5 °) ধাপে রঙিন চাকা ঘুরে দেখুন । এই কোণের সাহায্যে আপনি নিশ্চিত করতে পারবেন যে রঙ চাকাটির চারপাশে প্রতিটি সমঝোতার পরে আপনার নতুন রঙগুলি ইতিমধ্যে আপনি যে রঙ তৈরি করেছেন তার মধ্যে পড়ে।

কিছু ফুলের ধারাবাহিক ফুলের মধ্যে কোণ হ'ল সোনার কোণ।

( উইকিপিডিয়া থেকে চিত্র )


0

আমি কিছুটা পরীক্ষা-নিরীক্ষা করে জানতে পেরেছি যে এইচএসএল / এইচএসভির সাথেও সুন্দর, অবিসংবাদিত, শান্ত হওয়া (সমস্তই বিষয়গত, তবে ...), তবুও বিপরীত রঙের জন্য একটি শালীন অ্যালগরিদম পাওয়া খুব সহজ নয়। স্পেক্টরের কিছু অংশ দৃষ্টিভঙ্গি অনুরূপ - এসএসপি। সবুজ-নীল বিভাগ সুতরাং আমি কিছু হালকা বৈচিত্র যোগ করতে হয়েছিল।

আমি এখানে যা শেষ করেছি তা এখানে:

এখানে চিত্র বর্ণনা লিখুন

$.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();
    })
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.