นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน

Our Shangri-La
Ico64
Kittisakdi Choomalee

ภาควิชาเวชศาสตร์ชุมชน คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์
Network
Members · Following: 0 · Followed: 16

อ่าน: 4446
ความเห็น: 0

ก้าวย่าง ทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: เที่ยวบาร์กับ R กันเถอะ ตอนที่ ๕

โทนสีอื่นใน R

มาเที่ยวบาร์กันต่อนะครับ

ความเดิมในตอนที่แล้ว

ต้องทบทวนความเดิมกันก่อนที่จะต่อด้วยเรื่องราวใหม่ เพื่อประโยชน์สำหรับผู้อ่านที่เพิ่งเข้ามาอ่าน หรือลืมความเดิมตอนที่แล้วไปหมดแล้ว เหมือนละครหลังข่าวน่ะครับ มีการฉายย้อนตอนที่แล้วเพื่อเรียกน้ำย่อย พอ ๆ กับการฉายตัวอย่างตอนต่อไปให้น้ำลายสอ แต่บันทึกในซีรีย์นี้ไม่มีการฉายหนังตัวอย่างนะครับ มีแต่ฉายซ้ำตอนที่แล้ว

แน่นอนครับ เป็นเทคนิคหนึ่งที่ใช้เพื่อเพิ่มความยาวให้กับบันทึก

กลับมาเรื่องเที่ยวบาร์กันต่อนะครับ

ครั้งที่แล้วเราแต่งเสริมเติมสีให้กับแท่งข้อมูลสำหรับแผนภูมิแท่งไปแล้วนะครับ โดยที่เราเลือกใช้โทนสีรุ้ง (rainbow) โดยผ่านคำสั่ง rainbow(n) เมื่อ n คือจำนวนสีที่ต้องการ

จำนวนสีต้องเท่ากับจำนวนแท่งข้อมูลของแผนภูมินะครับ

เพราะฉะนั้นต้องนับดูก่อนว่าจำนวนแท่งข้อมูลมีกี่แท่ง หรือต้องรู้ว่าจำนวน "กลุ่ม" ของข้อมูลที่นำมาสร้างแผนภูมิแท่งนั้นมีกี่กลุ่ม

กับคำถามที่มีในใจของผู้อ่านทุกท่านตอนนี้คือ

หากกำหนดจำนวนสีไม่เท่ากับจำนวนแท่งข้อมูลจะเกิดอะไรขึ้น??

หรือหากกำหนดจำนวนสีมากกว่าจำนวนแท่งข้อมูลในแผนภูมิจะเกิดอะไรขึ้น

มาดูคำตอบกันเลยครับ

ผมกำหนดสีแค่ ๗ สีตามสีรุ้งนะครับ ลองดูว่าเกิดอะไรขึ้นกับแผนภูมิ

> a <- c(30,36,48,34,43,35,34,21,36)
> barplot(a, ylim=c(0,50), xlab="สัปดาห์", ylab="จำนวน (คน)", col=rainbow(7))

 

 

เราจะเห็นว่าโปรแกรม R จะเตรียมสีไว้เพียง ๗ สีตามที่เราระบุเท่านั้น แต่หากจำนวนชุดข้อมูลหรือจำนวนแท่งของแผนภูมิมีจำนวนมากกว่าสีที่กำหนดไว้ โปรแกรม R ก็จะใช้การวนรอบสีเพื่อเติมสีให้กับแท่งข้อมูลในแผนภูมิ ในรูปเราจะเห็นว่าหลังจากแท่งที่ ๗ แล้ว (แท่งที่ ๘ และ ๙) สีของแท่งจะเหมือนกับสีของแท่งที่ ๑ และ ๒ ตามลำดับ

คราวนี้ผมกำหนดจำนวนสีเกิดเกินกว่าแท่งข้อมูลที่มีอยู่ ๙ แท่งนะครับ ผมกำหนดจำนวนสีเป็น ๑๒ สี ดูผลเลยครับ

> barplot(a, ylim=c(0,50), xlab="สัปดาห์", ylab="จำนวน (คน)", col=rainbow(12))

 

 

หากกำหนดจำนวนสีเกินกว่าจำนวนแท่งข้อมูลแล้ว โปรแกรม R จะเตรียมสีไว้เท่ากับจำนวนที่เราระบุ โดยจะเริ่มไล่เฉดสี (ความอ่อน ความเข้ม) ของสีทั้ง ๗ เป็นเฉดสีต่าง ๆ เพื่อให้ครบตามจำนวนที่ระบุ แต่เมื่อจำนวนแท่งข้อมูลมีน้อยกว่าจำนวนสีที่เตรียมไว้ ก็จะมีสีจำนวนหนึ่งไม่ถูกนำมาใช้

คราวนี้มาลองเปรียบเทียบกับการกำหนดกันนะครับสีในครั้งที่แล้วที่กำหนดจำนวนสีพอดีกับจำนวนแท่งข้อมูล ผมเรียงแผนภูมิดังนี้ครับ กำหนดสีน้อยกว่าจำนวนแท่งข้อมูล กำหนดสีมากกว่าจำนวนแท่งข้อมูล และกำหนดจำนวนสีเท่ากับจำนวนแท่งข้อมูล จากซ้ายไปขวา

 

 

คลายหายสงสัยกันแล้วใช่ไหมครับ

คราวนี้มาต่อครับ

ผู้อ่านบางท่านอาจจะมีคำถามว่าถ้าหากไม่ทราบจำนวนกลุ่มของข้อมูลจะทำอย่างไรได้บ้างเพื่อกำหนดจำนวนสีให้เท่ากับจำนวนแท่งข้อมูล

ผมใช้คำว่าแท่งข้อมูลนี่สยองนะครับ เอาเป็นว่าผมเปลี่ยนมาใช้คำว่า "ชุดข้อมูล" ก็แล้วกันครับ

ถ้าเราไม่ทราบจำนวนชุดข้อมูลที่นำมาสร้างแผนภูมิแท่งเราจะกำหนดสีอย่างไรให้เท่ากับจำนวนชุดข้อมูล เพื่อไม่ให้สีของแต่ละชุดข้อมูลเหมือนกัน

จากการทดลองกำหนดสีให้มากและน้อยกว่าจำนวนชุดข้อมูล ผู้อ่านคงทราบคำตอบที่เป็นไปได้แล้วนะครับ

ก็กำหนดให้จำนวนสีสูง ๆ เอาไว้ ก็จะได้สีของชุดข้อมูลไม่ซ้ำกัน

แต่อย่าลืมนะครับว่ายิ่งกำหนดจำนวนสีมากเท่าไหร่เฉดสีจะใกล้เคียงกันมากขึ้น จะเป็นการไล่ระดับความเข้มของสีซึ่งอาจจะแยกกันชัดเจนได้ยาก

อีกประการคือเราจะใช้วิธีแบบข้างต้นนั้นคงไม่หรอย ต้องใช้วิธีที่ดีกว่า หรอยกว่าวิธีการกำหนดจำนวนสีให้มาก ๆ เข้าไว้

ท่านผู้อ่านยังจำการนับจำนวนตัวเลขในตัวแปรได้ไหมครับ

ยังจำคำสั่ง length(x) ได้ไหมครับ เมื่อ x คือเวคเตอร์ (ตัวแปรนั่นเอง) หรือกรอบข้อมูล

เช่น

> length(a)
[1] 9

a ในที่นี้คือชุดข้อมูลที่กำหนดให้กับโปรแกรม R เพื่อใช้เป็นข้อมูลตัวอย่างสำหรับสร้างแผนภูมิ (a <- c(30,36,48,34,43,35,34,21,36))

ได้คำตอบแล้วใช่ไหมครับ

มาลองดูกันนะครับ

แต่คราวนี้ผมเปลี่ยนโทนสีเป็นโทนร้อน (heat colors) นะครับ โดยผ่านคำสั่งกำหนดค่าสี heat.colors(n) เมื่อ n คือจำนวนสี ซึ่งในที่นี้เราจะใช้คำสั่ง length(x) กำหนดจำนวนสีแทนการระบุจำนวนสีโดยตรง

> barplot(a, ylim=c(0,50), xlab="สัปดาห์", ylab="จำนวน (คน)", col=heat.colors(length(a)))


 

เรียบร้อยครับ ลองทดสอบกับโทนสีรุ้ง (rainbow) ดูนะครับ

> barplot(a, ylim=c(0,50), xlab="สัปดาห์", ylab="จำนวน (คน)", col=rainbow(length(a)))

เราเอง

ปล. สำหรับสมาชิกวงแชร์ที่มีวันคล้ายวันเกิดในวันนี้ก็ขอให้เริ่มวันใหม่ของปีด้วยความสุข ด้วยความสดใสนะครับ

 

หมวดหมู่บันทึก: บริการวิชาการ
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 06 พฤศจิกายน 2555 19:07 แก้ไข: 07 พฤศจิกายน 2555 12:59 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 ServiceMan, Ico24 คนธรรมดา, และ Ico24 ทดแทน.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 34.204.176.189
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ