স্বয়ংক্রিয়ভাবে বিভিন্ন বর্ণের লাইন প্লট করুন


112

আমি একই গ্রাফের বিভিন্ন কার্নেল ঘনত্বের অনুমানের প্লট করার চেষ্টা করছি এবং আমি চাই সেগুলি সমস্ত আলাদা বর্ণের হোক। আমার কাছে স্ট্রিংটি ব্যবহার করে একটি পৃথক সমাধান রয়েছে 'rgbcmyk'এবং প্রতিটি পৃথক প্লটের জন্য আমি এটির মাধ্যমে পদক্ষেপ নিচ্ছি তবে আমি 7 টি পুনরাবৃত্তির পরে ডুপ্লিকেট পেতে শুরু করি। এটি করার কি আরও সহজ / আরও কার্যকর উপায় এবং আরও রঙিন বিকল্প রয়েছে?

for n=1:10
 source(n).data=normrnd(rand()*100,abs(rand()*50),100,1); %generate random data
end
cstring='rgbcmyk'; % color string
figure
hold on
for n=1:length(source)
 [f,x]=ksdensity(source(n).data); % calculate the distribution
 plot(x,f,cstring(mod(n,7)+1))  % plot with a different color each time
end

30
আপনি কেবল "সমস্ত হোল্ড" করার চেষ্টা করেছিলেন? যা প্রতিটি নতুন প্লট কমান্ডের জন্য স্বয়ংক্রিয়ভাবে নিউজ রঙ আঁকে।
twerdster

3
"হোল্ড অল" প্রকৃত প্রশ্নের উত্তর নয়, তবে এখানে শেষ হওয়া অনেকেরই সমাধান হতে পারে কারণ কেবল "হোল্ড" রাখলে সমস্ত বক্ররেখাকে নীল করে তোলে। অনেকেই @ সার্ভারকে ধন্যবাদ জানায়!
রুমি

8
এর মতো R2014b স্বাভাবিক hold onহয় বৈশিষ্ট্যগুলি সমতুল্য করার hold all। তবে, কীভাবে 7 ডিফল্ট রঙের চেয়ে বেশি পাওয়া যায় তা নিয়ে প্রশ্ন থেকেই যায়। ডিফল্ট রঙের মানচিত্রটি আজিম বর্ণিত সমাধান হিসাবে সমাধান হতে পারে বা সহজে চাক্ষুষ বৈষম্যের জন্য সুরযুক্ত রঙ তৈরি করতে কোনও ফাংশন ব্যবহার করা যেতে পারে, নীচে হিসাবে
chappjc

1
আমি যখন ব্যবহার hold allকরি তখন আমি বিভিন্ন রঙে প্লট পাই (যদিও আমি অবশ্যই বলব যে সেগুলি বেশ নিস্তেজ দেখাচ্ছে), আমি যখন ব্যবহার করি তখন আমার hold onসমস্ত প্লট নীল হয়ে যায়। সুতরাং আমি ভাবছি ক্রিয়ামূলক সমতুল্য কি।
হ্যালো গুডবাই

4
@ হেলো গুডবাই ইন আর ২০১৪ বি এবং আরও নতুন hold onরঙের প্লট দেয়। আপনি এবং পুরানো সংস্করণ ব্যবহার করছেন। থেকে বর্তমান ডক্স , " hold allহিসাবে একই hold on: দ্রষ্টব্য ব্যবহারের এই সিনট্যাক্স ভবিষ্যতের কোনো রিলিজে সরানো হবে। hold onপরিবর্তে।" আরও দেখুন রিলিজ নোট
চ্যাপজ্যাক

উত্তর:


131

রঙের সেট তৈরি করতে আপনি এইচএসভি এর মতো রঙিন মানচিত্র ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

cc=hsv(12);
figure; 
hold on;
for i=1:12
    plot([0 1],[0 i],'color',cc(i,:));
end

ম্যাটল্যাবের ১৩ টি পৃথক নামযুক্ত রঙিনম্যাপ রয়েছে ( 'ডক রঙিনম্যাপ' তাদের সমস্তের তালিকা করে)।

বিভিন্ন রঙে লাইন প্লট করার জন্য আরেকটি বিকল্প হ'ল লাইনস্টাইলআর্ডার ব্যবহার করা বৈশিষ্ট্যটি ; দেখতে ষড়যন্ত্র জন্য লাইনস রঙ ডিফাইনিং আরও তথ্যের জন্য ম্যাটল্যাব ডকুমেন্টেশনে।


এটি খুঁজছিল। ভালো থাকুন @ আজিম।
অধ্যাপক

উত্তরসূরীদের পক্ষে, আমি এই উত্তরটি @ মার্ক ইলিয়ট এর hold allসমাধানের উপরে বিভিন্ন রঙের মানচিত্র বেছে নিতে সক্ষম হওয়ার বহুমুখিতার কারণে গ্রহণ করতে পছন্দ করেছি।
ডোরেসুম

প্লটের পরিবর্তে "লাইন" প্লট কমান্ড ব্যবহার করে কীভাবে এটি কাজ করতে পারি?
পেড্রো 77

106

প্রকৃতপক্ষে, চক্রের রঙগুলি পাওয়ার জন্য একটি শালীন শর্টকাট পদ্ধতিটি তার hold all;জায়গায় ব্যবহার করা hold on;। একের পর একplot MATLAB এর ডিফল্ট রঙিনম্যাপের মাধ্যমে (আপনার জন্য স্বয়ংক্রিয়ভাবে) ঘোরানো হবে।

ম্যাটল্যাব সাইট থেকে এতে hold:

hold allপ্লট এবং বর্তমান লাইন রঙ এবং লাইন শৈলী ধারণ করে যাতে পরবর্তী প্লটিং কমান্ডগুলি কালার অর্ডার এবং লাইনস্টাইল অর্ডার বৈশিষ্ট্যের মান তালিকার শুরুতে পুনরায় সেট না করে। প্লটটিং কমান্ড পূর্বনির্ধারিত রঙ এবং লিনস্টাইলগুলির মধ্য দিয়ে সাইকেল চালিয়ে যাওয়া চালিয়ে যায় যেখানে তালিকাতে শেষ প্লটটি থামানো হয়েছিল।


36

দেরিতে উত্তর, তবে দুটি জিনিস যুক্ত করতে হবে:

  • কীভাবে 'ColorOrder'সম্পত্তি পরিবর্তন করবেন এবং কীভাবে এটি দিয়ে বিশ্বব্যাপী ডিফল্ট সেট করবেন সে সম্পর্কিত তথ্যের জন্য'DefaultAxesColorOrder' , এই পোস্টের নীচে "পরিশিষ্ট" দেখুন।
  • ম্যাটল্যাব সেন্ট্রাল ফাইল এক্সচেঞ্জে একটি দুর্দান্ত সরঞ্জাম রয়েছে যে কোনও সংখ্যক দৃশ্যত স্বতন্ত্র রঙ জেনারেট করতে, যদি আপনার কাছে এটি ব্যবহার করার জন্য চিত্র প্রসেসিং টুলবক্স থাকে। বিস্তারিত পড়ুন।

ColorOrder axesসম্পত্তি ব্যবহার করে যখন রং একটি তালিকা মাধ্যমে স্বয়ংক্রিয়ভাবে চক্র ম্যাটল্যাব পারবেন hold on/all(আবার, পরিশিষ্ট কিভাবে জন্য নীচে দেখুন set/ একটি নির্দিষ্ট অক্ষ জন্য অথবা বিশ্বব্যাপী মাধ্যমে )। তবে, ডিফল্টরূপে ম্যাটল্যাব কেবল চক্রের জন্য রঙের একটি সংক্ষিপ্ত তালিকা (আর ২০১২ বি হিসাবে মাত্র 7 ) নির্দিষ্ট করে এবং অন্যদিকে আরও ডেটা সিরিজের জন্য রঙের একটি ভাল সেট খুঁজে পেতে সমস্যা হতে পারে। 10 টি প্লটের জন্য, আপনি অবশ্যই ডিফল্টর উপর নির্ভর করতে পারবেন না ।getColorOrderDefaultAxesColorOrderColorOrder

একটি দুর্দান্ত উপায় এন চাক্ষুষরূপে স্বতন্ত্র রং নির্ধারণ সাথে আছেন "জেনারেট করুন সর্বাধিক Perceptually-স্বতন্ত্র রং" (GMPDC) ম্যাটল্যাব কেন্দ্রীয় ফাইল ফাইল বিনিময় উপর জমা । এটি লেখকের নিজস্ব কথায় ভালভাবে বর্ণনা করা হয়েছে:

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

উদাহরণস্বরূপ, যখন 25 টি রঙের জন্য অনুরোধ করা হয়:

25 "সর্বাধিক উপলব্ধি-স্বতন্ত্র রঙ"

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

distinguishable_colors(20)

অবশ্যই, আপনি ColorOrderএকটি একক অক্ষের জন্য সেট করতে পারেন বা আপনার পছন্দ মতো কোনওভাবে রঙের একটি তালিকা তৈরি করতে পারেন। উদাহরণস্বরূপ, 10 "সর্বাধিক উপলব্ধিযুক্ত-স্বতন্ত্র রঙ" উত্পন্ন করতে এবং একই অক্ষের 10 টি প্লটের জন্য ব্যবহার করুন ( তবে ব্যবহার না করে ColorOrderএভাবে লুপের প্রয়োজন হয় ):

% Starting with X of size N-by-P-by-2, where P is number of plots
mpdc10 = distinguishable_colors(10) % 10x3 color list
hold on
for ii=1:size(X,2),
    plot(X(:,ii,1),X(:,ii,2),'.','Color',mpdc10(ii,:));
end

প্রক্রিয়াটি সরল করা হয়েছে, অক্ষের সম্পত্তি সহ কোনও forলুপের প্রয়োজন নেইColorOrder :

এন-বাই-পি-বাই-আকারের% এক্স
এমপিডিসি 10 = পার্থক্যযোগ্য_ রঙগুলি (10)
হা = অক্ষ; হোল্ড (হা, 'উপর')
সেট (হা, 'কালারআর্ডার', এমপিডিসি 10)% --- সেট করুন কালারআর্ডার এখানে ---
প্লট (এক্স (:,:, 1), এক্স (:,:, 2), '-।')% লুপের প্রয়োজন নেই, 'রঙ' দরকার নেই। হ্যাঁ!

পরিশিষ্ট

পেতে ColorOrderবর্তমান অক্ষের জন্য ব্যবহৃত আরজিবি এরে,

get(gca,'ColorOrder')

ColorOrderনতুন অক্ষগুলির জন্য ডিফল্ট পেতে ,

get(0,'DefaultAxesColorOrder')

ColorOrderএমএটিএলবিতে 10 টি রঙ সহ নতুন গ্লোবাল সেট করার উদাহরণ startup.m:

set(0,'DefaultAxesColorOrder',distinguishable_colors(10))

2
কেবল একটি নোট, এটির জন্য ইমেজ প্রসেসিং টুলবক্সের প্রয়োজনীয়তা উপস্থিত রয়েছে।
ডোরেসুম

2
@ ডোরসুম তথ্যের জন্য ধন্যবাদ। আমি পোস্ট আপডেট করেছি।
chappjc

12

পার্টিতে লে। আমি নিজে এটি খতিয়ে দেখছিলাম এবং সবেমাত্র কালারআর্ডার নামক এই অক্ষগুলির অপশনটি সম্পর্কে সন্ধান পেয়েছি আপনি সেশনের জন্য বা কেবল চিত্রের জন্য রঙের অর্ডার নির্দিষ্ট করতে পারেন এবং তারপরে কেবল একটি অ্যারের প্লট করতে পারেন এবং ম্যাটল্যাবকে নির্দিষ্ট রঙগুলির মধ্যে স্বয়ংক্রিয়ভাবে চক্রটি চলতে দিন।

ডিফল্ট রঙিন অর্ডার পরিবর্তন করা দেখুন

উদাহরণ

set(0,'DefaultAxesColorOrder',jet(5))
A=rand(10,5);
plot(A);

1
এক-অফ অক্ষের জন্য:set(gca,'ColorOrder',jet(5));
ইভজেনি সার্জিভ

1
জেট (নম্বর) সম্পর্কে কোনও তথ্যের জন্য দুর্দান্ত যা কোনও অভিনব সরঞ্জামদ্বারগুলির প্রয়োজন হয় না
ক্রোবার

4

যদি সমস্ত ভেক্টরের সমান আকার থাকে তবে একটি ম্যাট্রিক্স তৈরি করুন এবং এটি প্লট করুন। প্রতিটি কলাম স্বয়ংক্রিয়ভাবে আলাদা রঙের সাথে চক্রান্ত করা হয় তারপরে আপনি legendকলামগুলি নির্দেশ করতে ব্যবহার করতে পারেন :

data = randn(100, 5);

figure;
plot(data);

legend(cellstr(num2str((1:size(data,2))')))

অথবা, কার্নেলের নাম সহ যদি আপনার কোনও ঘর থাকে তবে ব্যবহার করুন

legend(names)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.