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

แผนที่ Choropleth

เมื่อเข้าใจการวาด polygon แล้ว มาวาง polygon บนแผนที่กัน จำไว้ว่าให้แทนที่การเรียก ggplot() ด้วย ggmap() แล้วย้าย ggplot() เดิมไปไว้ใน argument base_layer() จากนั้นเพิ่ม layer ของ polygon ตามปกติ:

ggmap(corvallis_map_bw,
      base_layer = ggplot(ward_sales,
                          aes(lon, lat))) +
  geom_polygon(aes(group = group, fill = ward))

ลองรันในคอนโซลดูได้เลย!

โอ้ ผลลัพธ์ดูไม่ถูกต้อง Ward 1, 3 และ 8 มีรูปร่างขรุขระและผิดปกติ เกิดอะไรขึ้น? บางส่วนของขอบเขต ward อยู่นอกพื้นที่แผนที่ เนื่องจากการตั้งค่าเริ่มต้นของ ggmap() จะตัดข้อมูลที่อยู่นอกแผนที่ออกก่อนการพล็อต ทำให้ขอบเขตบาง polygon หายไป เมื่อนำจุดที่เหลือมาเชื่อมกัน รูปร่างจึงผิดเพี้ยนไป

ไม่ต้องกังวล เพราะมีวิธีแก้: ggmap() มี argument สำหรับควบคุมพฤติกรรมนี้ การตั้งค่า extent = "normal" พร้อมกับ maprange = FALSE จะบังคับให้พล็อตใช้ช่วงของข้อมูลแทนช่วงของแผนที่ในการกำหนดขอบเขตการแสดงผล

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การสร้างภาพข้อมูลภูมิสารสนเทศใน R

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Fix the polygon cropping
ggmap(corvallis_map_bw, 
      base_layer = ggplot(ward_sales, aes(lon, lat))) +
  geom_polygon(aes(group = group, fill = ward))
แก้ไขและรันโค้ด