ตัวอย่างสเกลสีแบบ Diverging
มาดูชุดข้อมูลอีกชุดหนึ่งที่สเกลสีเริ่มต้นไม่เหมาะสมกัน Raster ชื่อ migration นี้มีค่าประมาณจำนวนสุทธิของผู้คนที่ย้ายเข้ามาในแต่ละเซลล์ระหว่างปี 1990 ถึง 2000 ค่าบวกหมายถึงมีการอพยพเข้า ส่วนค่าลบหมายถึงมีการอพยพออก ลองดูได้เลย:
tm_shape(migration) +
tm_raster() +
tm_legend(outside = TRUE,
outside.position = c("bottom"))
สเกลสีเริ่มต้นดูไม่ค่อยมีประโยชน์ แต่จริง ๆ แล้ว tmap ทำสิ่งที่ฉลาดมาก นั่นคือเลือกสเกลสีแบบ diverging ให้อัตโนมัติ สเกลแบบนี้เหมาะสมเพราะการเคลื่อนย้ายของผู้คนจำนวนมากสะท้อนออกมาเป็นตัวเลขบวกมาก หรือ ตัวเลขลบที่มีขนาดใหญ่ โดยมีศูนย์ (คือไม่มีการย้ายถิ่นสุทธิ) เป็นจุดกึ่งกลางตามธรรมชาติ
tmap จะเลือกสเกลแบบ diverging เมื่อตัวแปรที่แสดงบนแผนที่มีทั้งค่าบวกและค่าลบ และกำหนดให้ศูนย์เป็นจุดกึ่งกลาง ซึ่งไม่ใช่วิธีที่ถูกต้องเสมอไป ลองจินตนาการว่ากำลังแสดงการเปลี่ยนแปลงแบบสัมพัทธ์เป็นเปอร์เซ็นต์ ในกรณีนั้น 100% อาจเป็นจุดกึ่งกลางที่เข้าใจง่ายกว่า หากต้องการปรับเปลี่ยน วิธีที่ดีที่สุดคือสร้าง palette แบบ diverging เอง (โดยให้มีจำนวนขั้นเป็นเลขคี่ เพื่อให้มีสีกลาง) แล้วกำหนด breaks เอง
มาลองสร้างแผนที่ที่ให้ข้อมูลมากขึ้นด้วยการเพิ่มสเกล diverging เองกัน
(แหล่งข้อมูล: de Sherbinin, A., M. Levy, S. Adamo, K. MacManus, G. Yetman, V. Mara, L. Razafindrazay, B. Goodrich, T. Srebotnjak, C. Aichele, and L. Pistolesi. 2015. Global Estimated Net Migration Grids by Decade: 1970-2000. Palisades, NY: NASA Socioeconomic Data and Applications Center (SEDAC). http://dx.doi.org/10.7927/H4319SVC เข้าถึงเมื่อ 27 ก.ย. 2016)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- พิมพ์
migrationเพื่อยืนยันว่าเป็นออบเจกต์RasterLayerและดูช่วงของค่าการย้ายถิ่น - สร้าง palette แบบ diverging ชื่อ
red_grayจำนวน 7 สี จาก palette"RdGy"ในRColorBrewer - ใช้ชุดสี diverging ที่ชื่อ
red_grayเป็น palette ของพล็อต ขั้นตอนนี้จะใช้สีที่กำหนด แต่ค่า breaks ยังไม่เป็นประโยชน์ - เพิ่ม fixed breaks สำหรับสเกลสี:
c(-5e6, -5e3, -5e2, -5e1, 5e1, 5e2, 5e3, 5e6)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Print migration
# Diverging "RdGy" palette
red_gray <- brewer.pal()
# Use red_gray as the palette
tm_shape(migration) +
tm_raster() +
tm_legend(outside = TRUE, outside.position = c("bottom"))
# Add fixed breaks
tm_shape(migration) +
tm_raster() +
tm_legend(outside = TRUE, outside.position = c("bottom"))