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

การจัดวาง 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 = ___)
แก้ไขและรันโค้ด