โปรยจุดข้อมูลลงมา
ความเป็น bimodal ที่เพิ่มขึ้นในช่วงต้นสัปดาห์ อาจ น่าสนใจ แต่ควรพล็อตจุดข้อมูลแต่ละจุดไว้ใต้เส้น density เพื่อทำความเข้าใจว่า KDE แก้ปัญหาการ interpolation อย่างไร ก่อนสรุปผล
โค้ดจากแบบฝึกหัดก่อนหน้าได้เพิ่ม point geometry เข้ามาเพื่อจุดประสงค์นี้แล้ว แต่ผลลัพธ์ที่ได้ยังไม่สวยงามนัก เราจะปรับปรุงด้วยวิธีต่อไปนี้
ขั้นแรก ลดค่า alpha ของจุดลงเล็กน้อยเพื่อให้มองเห็นส่วนที่ซ้อนทับกัน จากนั้นเปลี่ยนรูปร่างของจุดเป็นเส้นแนวตั้งแบบ geom_rug() ('|')
หากรันโค้ดในขั้นตอนนี้ จะเห็นว่าจุดต่าง ๆ ทับซ้อนกับรูปร่างของ density อย่างน่าเกลียด เราจึงต้อง 'nudge' หรือเลื่อนเครื่องหมายเหล่านั้นลงตามแกน y เล็กน้อย โดยใช้ argument position ร่วมกับฟังก์ชันช่วย position_nudge()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างภาพข้อมูลใน R
คำแนะนำการฝึกหัด
- ลดค่า
alphaของจุดลงเหลือ0.2เพื่อแสดงส่วนที่ซ้อนทับกัน - เปลี่ยนรูปร่าง
shapeของเส้นเป็น'|'เพื่อใช้พื้นที่ได้อย่างมีประสิทธิภาพมากขึ้น - เลื่อนจุดลงด้านล่างเพื่อไม่ให้ทับซ้อนกับรูปร่าง density ด้วย
position = position_nudge(y = -0.05)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
md_speeding %>%
mutate(day_of_week = factor(day_of_week, levels = c("Mon","Tues","Wed","Thu","Fri","Sat","Sun") )) %>%
ggplot(aes( x = percentage_over_limit, y = day_of_week)) +
geom_point(
# make semi-transparent with alpha = 0.2
# turn points to vertical lines with shape = '|'
# nudge the points downward by 0.05
) +
geom_density_ridges(bandwidth = 3.5, alpha = 0.7) +
scale_x_continuous(limits = c(0,150), expand = c(0,0)) +
labs(subtitle = 'Guassian kernel SD = 3.5') +
theme( axis.ticks.y = element_blank() )