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

ตัวอย่างสเกลสีแบบ 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"))
แก้ไขและรันโค้ด