เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ตัวอย่างตัวแปรเชิงกลุ่ม

มาดูตัวอย่างตัวแปรเชิงกลุ่ม (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 ใช้ จากนั้นพล็อต raster land_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


แก้ไขและรันโค้ด