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

การสร้างพล็อตแบบเป็น 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() ด้วย layer tm_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()
แก้ไขและรันโค้ด