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

ตัวอย่างการแบ่งช่วงสเกล

กลับมาดูกราฟสัดส่วนประชากรที่มีอายุระหว่าง 18 ถึง 24 ปีอีกครั้ง:

tm_shape(prop_by_age) +
  tm_raster("age_18_24", palette = vir) +
  tm_legend(position = c("right", "bottom"))

กราฟที่ได้มีปัญหาเนื่องจากสัดส่วนส่วนใหญ่ตกอยู่ในระดับสีต่ำสุด ทำให้กราฟแสดงรายละเอียดได้น้อยมาก วิธีหนึ่งในการแก้ปัญหานี้คือ แทนที่จะแบ่งช่วงของตัวแปรออกเป็นถังขนาดเท่ากัน ให้แบ่งเป็นหมวดหมู่ที่เหมาะสมกว่าแทน

เริ่มต้นด้วยการทำซ้ำค่าเริ่มต้นของ tmap ซึ่งแบ่งเป็น 5 หมวดหมู่โดยใช้การแบ่งแบบ "pretty" จากนั้นลองใช้วิธีอื่น ๆ ในการแบ่งตัวแปรออกเป็นช่วง การเรียกใช้ฟังก์ชัน classIntervals() โดยตรงจะให้ผลตอบกลับอย่างรวดเร็วว่าจุดแบ่งจะอยู่ที่ใด แต่วิธีที่ดีที่สุดในการทดลองใช้ชุดจุดแบ่งคือการพล็อตกราฟดู

(เพิ่มเติม: อีกวิธีในการแก้ปัญหาประเภทนี้คือการหาการแปลงตัวแปรที่เหมาะสม เพื่อให้ถังขนาดเท่ากันบนสเกลที่แปลงแล้วมีประโยชน์มากขึ้น)

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

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เรียก classIntervals() บน values(prop_by_age[["age_18_24"]]) โดยกำหนด n = 5 และ style = "pretty" สังเกตปัญหาที่เกิดขึ้น: เซลล์กริด 130,770 เซลล์ตกอยู่ในถังแรก
  • เรียก classIntervals() อีกครั้งเหมือนเดิม แต่เปลี่ยนเป็น style = "quantile"
  • ใช้ถังขนาดเท่ากันโดยส่งอาร์กิวเมนต์ n และ style เข้าไปในเลเยอร์ tm_raster() ของกราฟ
  • สร้างฮิสโตแกรมของ values(prop_by_age[["age_18_24"]]) ควรกำหนดจุดแบ่งที่ตำแหน่งใด?
  • กำหนดจุดแบ่งเองใน tm_raster() โดยระบุ breaks = c(0.025, 0.05, 0.1, 0.2, 0.25, 0.3, 1)
  • บันทึกกราฟสุดท้ายเป็น leaflet plot โดยใช้ tmap_save() พร้อมกำหนด filename เป็น "prop_18-24.html"

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

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

mag <- viridisLite::magma(7)

library(classInt)

# Create 5 "pretty" breaks with classIntervals()



# Create 5 "quantile" breaks with classIntervals()



# Use 5 "quantile" breaks in tm_raster()
tm_shape(prop_by_age) +
  tm_raster("age_18_24", palette = mag) +
  tm_legend(position = c("right", "bottom"))

# Create histogram of proportions


# Use fixed breaks in tm_raster()
tm_shape(prop_by_age) +
  tm_raster("age_18_24", palette = mag,
    style = "fixed")

# Save your plot to "prop_18-24.html"
แก้ไขและรันโค้ด