ตัวอย่างตัวแปรเชิงกลุ่ม
มาดูตัวอย่างตัวแปรเชิงกลุ่ม (categorical variable) กัน raster ชื่อ land_cover มีข้อมูลการจำแนกประเภทพื้นผิวโลกในรูปแบบกริด ลองพิมพ์ land_cover เพื่อดูข้อมูล:
land_cover
จะเห็นว่า values เป็นตัวเลข แต่มี attributes ที่แมปตัวเลขเหล่านั้นกับหมวดหมู่ต่าง ๆ (คล้ายกับวิธีที่ factor ทำงาน)
การเลือกสีสำหรับตัวแปรเชิงกลุ่มขึ้นอยู่กับจุดประสงค์ของกราฟิกเป็นอย่างมาก หากต้องการให้แต่ละหมวดหมู่มีน้ำหนักทางสายตาใกล้เคียงกัน นั่นคือ ไม่ต้องการให้หมวดหมู่ใดหมวดหมู่หนึ่งโดดเด่นกว่าหมวดอื่น วิธีหนึ่งคือใช้สีที่ต่างกันในด้าน hue แต่มีค่า chroma (ความสดใส) และ lightness (ความสว่าง) เท่ากัน ซึ่งเป็นค่าเริ่มต้นของ color scale แบบ discrete ใน ggplot2 และสามารถสร้างได้ด้วยฟังก์ชัน hcl()
ชุดสี qualitative ของ RColorBrewer ออกแบบมาเพื่อให้สีแต่ละสีมีน้ำหนักทางสายตาเท่ากันและแยกแยะได้ง่าย แต่ scheme "paired" และ "accent" จะแตกต่างออกไป โดย "paired" ให้สีเป็นคู่ที่มีความสว่างต่างกัน ส่วน "accent" มีสีบางสีที่เข้มกว่าเพื่อเน้นหมวดหมู่เฉพาะ
สำหรับข้อมูลชุดนี้ การเลือกสีที่สื่อความหมายได้ชัดเจนอาจเหมาะกว่า เช่น สีเขียวสำหรับป่าไม้และสีน้ำเงินสำหรับน้ำ ไม่ว่าจะเลือกแนวทางใด การกำหนดสีใหม่ทำได้ง่าย ๆ เพียงส่ง vector ของสีผ่านอาร์กิวเมนต์ palette ในเลเยอร์ tm_*** ที่เกี่ยวข้อง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- พล็อต raster
land_coverโดยใช้tm_shape()ร่วมกับtm_raster()ค่าเริ่มต้นtmapจะใช้ชุดสี qualitative"Set3"ของRColorBrewer - ศึกษาโค้ดของ
hcl_colsซึ่งจำลองชุดสีที่ggplot2ใช้ จากนั้นพล็อต rasterland_coverอีกครั้ง โดยส่งhcl_colsไปยังอาร์กิวเมนต์paletteในtm_raster() - เรียก
levels()บนland_coverเพื่อดูหมวดหมู่ต่าง ๆ - คราวนี้ใช้
intuitive_colsเป็น palette และเพิ่มเลเยอร์tm_legend()โดยกำหนดอาร์กิวเมนต์position = c("left", "bottom")
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
library(raster)
# Plot land_cover
# Palette like the ggplot2 default
hcl_cols <- hcl(h = seq(15, 375, length = 9),
c = 100, l = 65)[-9]
# Use hcl_cols as the palette
# Examine levels of land_cover
# A set of intuitive colors
intuitive_cols <- c(
"darkgreen",
"darkolivegreen4",
"goldenrod2",
"seagreen",
"wheat",
"slategrey",
"white",
"lightskyblue1"
)
# Use intuitive_cols as palette