การสร้างพล็อตแบบเป็น layer
ตอนนี้ที่เข้าใจ tmap() มากขึ้นแล้ว มาต่อยอดพล็อตประชากรโลกที่สร้างไว้ด้วยการเพิ่ม layer และปรับแต่งให้ดียิ่งขึ้น เริ่มต้นด้วย layer tm_shape() เพื่อกำหนดข้อมูลที่ต้องการใช้ จากนั้นเพิ่ม layer tm_fill() เพื่อระบายสีพื้นที่โพลีกอนตามตัวแปร population:
tm_shape(countries_spdf) +
tm_fill(col = "population")
ปัญหาที่ชัดเจนที่สุดของพล็อตที่ได้คือ สเกลสีไม่ค่อยมีประโยชน์นัก เพราะสีแรก (เหลืองอ่อนที่สุด) ครอบคลุมทุกประเทศที่มีประชากรต่ำกว่า 200 ล้านคน เนื่องจากสเกลสีเชื่อมโยงกับ layer tm_fill() การปรับแต่งสเกลนี้จึงทำได้ในฟังก์ชันนี้ เรื่องสีจะได้เรียนเพิ่มเติมในบทที่ 3 แต่สำหรับตอนนี้ให้รู้ว่า argument style ใช้ควบคุมวิธีการกำหนดจุดตัดของช่วงสี
พล็อตยังต้องการเส้นขอบประเทศด้วย สามารถเพิ่ม layer tm_borders() สำหรับส่วนนี้ได้ แต่ไม่ต้องให้เส้นเด่นมากเกินไป สีน้ำตาลอาจเป็นตัวเลือกที่ดี
ข้อดีของการใช้ spatial object จะเห็นได้ชัดเมื่อเปลี่ยนประเภทของพล็อต ลองเปลี่ยนเป็น bubble plot ที่ขนาดของฟองแทนจำนวนประชากรดู หากใช้ ggplot2 จะต้องปรับรูปแบบข้อมูลค่อนข้างมาก แต่ด้วย tmap เพียงแค่สลับ layer ก็เสร็จ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- เพิ่ม
style = "quantile"ในtm_fill()วิธีนี้จะกำหนดจุดตัดของช่วงสีตามจำนวนการสังเกตที่เท่ากันในแต่ละช่วง - เพิ่ม layer
tm_borders()พร้อมcol = "burlywood4"ลงในพล็อตเดียวกัน - สร้างพล็อตใหม่เหมือนพล็อตแรก แต่แทนที่
tm_fill()ด้วย layertm_bubbles()โดยให้sizeแมปกับจำนวนประชากร
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
library(sp)
library(tmap)
# Add style argument to the tm_fill() call
tm_shape(countries_spdf) +
tm_fill(col = "population") +
# Add a tm_borders() layer
# New plot, with tm_bubbles() instead of tm_fill()