คำตอบช้า แต่มีสองสิ่งที่ต้องเพิ่ม:
- สำหรับข้อมูลเกี่ยวกับวิธีการเปลี่ยน
'ColorOrder'
คุณสมบัติและวิธีตั้งค่าเริ่มต้นส่วนกลาง'DefaultAxesColorOrder'
โปรดดู "ภาคผนวก" ที่ด้านล่างของโพสต์นี้
- มีเครื่องมือที่ยอดเยี่ยมใน MATLAB Central File Exchange ในการสร้างสีที่แตกต่างกันออกไปจำนวนเท่าใดก็ได้หากคุณมีกล่องเครื่องมือประมวลผลภาพที่จะใช้ อ่านรายละเอียดเพิ่มเติม
ColorOrder
axes
คุณสมบัติช่วยให้ MATLAB เพื่อวงจรโดยอัตโนมัติผ่านรายการของสีเมื่อใช้hold on/all
(อีกครั้งดูที่ภาคผนวกด้านล่างสำหรับวิธีการset
/ สำหรับแกนที่เฉพาะเจาะจงหรือทั่วโลกผ่านทาง) อย่างไรก็ตามโดยค่าเริ่มต้นMATLAB จะระบุเฉพาะรายการสีสั้น ๆ ( เพียงแค่ 7 สีณ R2013b)เพื่อหมุนเวียนและในทางกลับกันอาจเป็นปัญหาในการค้นหาชุดสีที่ดีสำหรับชุดข้อมูลเพิ่มเติม สำหรับ 10 แปลงคุณไม่สามารถพึ่งพาค่าเริ่มต้นได้อย่างชัดเจนget
ColorOrder
DefaultAxesColorOrder
ColorOrder
วิธีที่ดีที่กำหนดไม่มีสีที่แตกต่างกันทางสายตาเป็นกับ"สร้าง Maximally สี perceptually-ที่แตกต่าง" (GMPDC) ส่งใน MATLAB เซ็นทรัลไฟล์แลกเปลี่ยน อธิบายได้ดีที่สุดด้วยคำพูดของผู้เขียนเอง:
ฟังก์ชันนี้จะสร้างชุดสีที่แยกแยะได้โดยการอ้างอิงพื้นที่สี "Lab"ซึ่งตรงกับการรับรู้สีของมนุษย์มากกว่า RGB เมื่อพิจารณาจากรายการสีที่เป็นไปได้จำนวนมากเริ่มต้นระบบจะเลือกรายการในรายการที่อยู่ไกลที่สุด (ในพื้นที่ห้องปฏิบัติการ) จากรายการที่เลือกไว้ก่อนหน้านี้ทั้งหมด
ตัวอย่างเช่นเมื่อมีการร้องขอ 25 สี:
การส่ง GMPDC ได้รับเลือกในบล็อกอย่างเป็นทางการของ MathWorks ในฐานะPick of the Weekในปี 2010 ส่วนหนึ่งเป็นเพราะความสามารถในการขอจำนวนสีโดยพลการ (ตรงกันข้ามกับ MATLAB ที่สร้างขึ้นใน 7 สีเริ่มต้น) พวกเขายังให้คำแนะนำที่ยอดเยี่ยมในการตั้งค่า MATLAB 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
คุณสมบัติของแกน :
% X ของขนาด N-by-P-by-2
mpdc10 = สีที่แตกต่างได้ (10)
ha = แกน; ถือ (ฮ่า 'ที่')
set (ha, 'ColorOrder', mpdc10)% - ตั้งค่า ColorOrder ที่นี่ -
พล็อต (X (:,:, 1), X (:,:, 2), '-.')% ห่วงไม่จำเป็นไม่จำเป็นต้องใช้ 'สี' เย้!
ภาคผนวก
ในการรับColorOrder
อาร์เรย์ RGB ที่ใช้สำหรับแกนปัจจุบัน
get(gca,'ColorOrder')
ในการรับค่าเริ่มต้นColorOrder
สำหรับแกนใหม่
get(0,'DefaultAxesColorOrder')
ตัวอย่างการตั้งค่า global ใหม่ColorOrder
ด้วย 10 สีใน MATLAB start ในstartup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))