กำหนด Palette แบบกำหนดเองใน tmap
ต่างจาก ggplot2 ที่การกำหนดสเกลสีแบบกำหนดเองจะใช้คำสั่ง scale_ แยกต่างหาก ใน tmap นั้น สีจะถูกระบุโดยตรงในเลเยอร์ที่ใช้แมปข้อมูล ตัวอย่างเช่น การพล็อตตัวแปร age_18_24 จาก prop_by_age:
tm_shape(prop_by_age) +
tm_raster(col = "age_18_24")
เนื่องจากสีถูกแมปในคำสั่ง tm_raster() การระบุ palette จึงเกิดขึ้นในคำสั่งเดียวกัน โดยระบุเวกเตอร์ของสีในอาร์กิวเมนต์ palette นี่เป็นอีกเหตุผลหนึ่งที่ควรเรียนรู้วิธีสร้างเวกเตอร์สี แม้ว่าแต่ละแพ็กเกจจะมีทางลัดในการระบุ palette จากแพ็กเกจสีที่แตกต่างกัน แต่โดยทั่วไปทุกแพ็กเกจจะรองรับการส่งเวกเตอร์สีเข้าไปได้เสมอ
มาลองใช้ palette จากแบบฝึกหัดที่แล้วกับพล็อตนี้กัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- ในพล็อตแรก ให้ใช้ palette
blupsแทนค่าเริ่มต้น - ในพล็อตที่สอง ให้ใช้ palette
virแทนค่าเริ่มต้น - ในพล็อตที่สาม ให้ใช้ palette
rev(mag)แทนค่าเริ่มต้นrev()เป็นฟังก์ชันที่ใช้กลับลำดับของเวกเตอร์ ดังนั้นจึงใช้สีชุดเดิมแต่เรียงในลำดับตรงกันข้าม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Generate palettes from last time
library(RColorBrewer)
blups <- brewer.pal(9, "BuPu")
library(viridisLite)
vir <- viridis(9)
mag <- magma(9)
# Use the blups palette
tm_shape(prop_by_age) +
tm_raster("age_18_24") +
tm_legend(position = c("right", "bottom"))
# Use the vir palette
tm_shape(prop_by_age) +
tm_raster("age_18_24") +
tm_legend(position = c("right", "bottom"))
# Use the mag palette but reverse the order
tm_shape(prop_by_age) +
tm_raster("age_18_24") +
tm_legend(position = c("right", "bottom"))