การจัดวาง layout ของเครือข่ายใน igraph
แพ็กเกจ igraph มีอัลกอริทึมสำหรับจัด layout ของเครือข่ายให้เลือกใช้หลายแบบ เครือข่ายที่มีขนาดต่างกันอาจเหมาะกับ layout ที่ต่างกัน โดย layout ที่ดีที่สุดคือแบบที่ทำให้เส้นเชื่อม (edges) ตัดกันน้อยที่สุด ในแบบฝึกหัดนี้จะได้ลองใช้ layout อัลกอริทึมเริ่มต้นหลายแบบ การรันโค้ดซ้ำสำหรับแต่ละกราฟจะได้ผลลัพธ์ที่แตกต่างกันเล็กน้อยในแต่ละครั้ง ลองทำหลายรอบเพื่อหาการแสดงผลที่ดูดีที่สุดสำหรับเครือข่ายของคุณ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายใน R
คำแนะนำการฝึกหัด
- ในฟังก์ชัน plot ให้เปลี่ยนอาร์กิวเมนต์
layoutเป็นlayout_in_circle()เพื่อแสดงเครือข่ายในรูปแบบวงกลม - ในฟังก์ชัน plot ให้เปลี่ยนอาร์กิวเมนต์
layoutเป็นlayout_with_fr()เพื่อแสดงเครือข่ายด้วย layout แบบ Fruchterman-Reingold - สามารถกำหนด layout ได้โดยระบุเมทริกซ์ของพิกัด (x, y) สำหรับแต่ละเวอร์เท็กซ์ ในขั้นตอนนี้ใช้ฟังก์ชัน
layout_as_tree()เพื่อสร้างเมทริกซ์พิกัดmจากนั้นส่งmไปยังพารามิเตอร์layoutในฟังก์ชันplot()เพื่อพล็อตกราฟ - การเลือก layout ที่เหมาะสมอาจทำให้สับสนได้ โชคดีที่
igraphมีฟังก์ชันlayout_nicely()ซึ่งจะพยายามเลือก layout ที่เหมาะสมที่สุดให้อัตโนมัติ ใช้ฟังก์ชันนี้เพื่อสร้างเมทริกซ์m1แล้วพล็อตเครือข่ายโดยใช้พิกัดดังกล่าว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
library(igraph)
# Plot the graph object g1 in a circle layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Fruchterman-Reingold layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Tree layout
m <- ___(g1)
plot(g1, vertex.label.color = "black", layout = m)
# Plot the graph object g1 using igraph's chosen layout
___ <- layout_nicely(___)
plot(___, vertex.label.color = "black", layout = ___)