ทฤษฎีกราฟ - การวิเคราะห์และการสร้างภาพ


22

ฉันไม่แน่ใจว่าหัวเรื่องเข้าสู่ความสนใจของ CrossValidated คุณจะบอกฉัน

ฉันต้องศึกษากราฟ (จากทฤษฎีกราฟ ) เช่น ฉันมีจุดจำนวนหนึ่งที่เชื่อมต่ออยู่ ฉันมีตารางที่มีจุดทั้งหมดและจุดแต่ละจุดขึ้นอยู่กับ (ฉันมีตารางอื่นที่มีความหมาย)

คำถามของฉันคือ:
มีซอฟต์แวร์ที่ดี (หรือแพ็คเกจ R) เพื่อการศึกษาที่ง่ายดายหรือไม่?
มีวิธีง่าย ๆ ในการแสดงกราฟหรือไม่?


ฉันได้ลองใช้cran.r-project.org/web/packages/graph/vignettes/graph.pdf แล้วแต่พบว่าแพ็คเกจ "Rgraphviz" นั้นใช้งานไม่ได้อีกต่อไป ใครมีวิธีแก้ปัญหาอื่น
RockScience


1
ขอบคุณ! Graphviz นั้นสมบูรณ์แบบและยืดหยุ่นมากฉันใช้มันใน R ด้วยอินเตอร์เฟส Rgraphviz และมันใช้งานได้ดีมาก
RockScience

คำตอบ:


15

iGraphเป็นห้องสมุดข้ามภาษา (R, Python, Ruby, C) ที่น่าสนใจมาก ช่วยให้คุณทำงานกับกราฟที่ไม่มีทิศทางและกำกับและมีอัลกอริธึมการวิเคราะห์ค่อนข้างน้อยที่นำไปใช้งานแล้ว


1
(+1) ดูเหมือนว่าคำตอบของฉันจะมาตามคุณ เนื่องจากการตอบสนองของคุณเน้นมุมมองที่แตกต่างออกไป (ข้ามแพลตฟอร์มอัลกอริธึม) ฉันรู้สึกว่าคำตอบของเราไม่ซ้ำซ้อนมากนัก แต่ฉันสามารถลบของฉันออกได้โดยไม่มีปัญหาใด ๆ
chl

14

มีแพคเกจต่างๆสำหรับการแสดงกราฟกำกับและไม่ได้บอกทิศทางเมทริกซ์อุบัติการณ์ / adjacency ฯลฯ นอกจากกราฟ ; ค้นหาตัวอย่างที่มุมมองงานgR

สำหรับการสร้างภาพและการคำนวณพื้นฐานฉันคิดว่าแพ็คเกจigraphนั้นเป็นแพ็คเกจที่เชื่อถือได้นอกเหนือจากRgraphviz (บน BioC ตามที่ระบุโดย @Rob) พึงระวังว่าหลังจะต้องทำงานอย่างถูกต้องgraphvizจะต้องติดตั้งด้วย igraphแพคเกจมีขั้นตอนวิธีการที่ดีในการสร้างรูปแบบที่ดีมากเช่นGraphviz

นี่คือตัวอย่างของการใช้งานเริ่มต้นจากเมทริกซ์ adjacency ปลอม:

adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)

ข้อความแสดงแทน


ขอบคุณสำหรับคำตอบ. graphviz ไม่ใช่เรื่องง่ายที่จะติดตั้งด้วย R แต่มันก็เป็นห้องสมุดที่ยอดเยี่ยม
RockScience

FYI สิ่งที่ฉันทำตอนนี้คือฉันสร้างโค้ด graphviz ด้วย R และฉันอ่านมันใน mediawiki โดยใช้ส่วนขยาย mediawiki graphviz (แพ็คเกจ Rgraphviz ไม่ใช่เรื่องง่ายในการติดตั้งและไม่สามารถใช้งานได้กับรุ่นล่าสุดของ R)
RockScience

"แพ็คเกจ" กราฟ "ถูกลบออกจากที่เก็บ CRAN แล้ว"
bartektartanus

8

นอกเหนือจากสิ่งที่ได้รับกล่าวว่าสำหรับงาน vusualization เพียงอย่างเดียว (และนอกจาก R), คุณอาจจะสนใจในการตรวจสอบGephi


8

ตัวเลือกอื่นคือแพคเกจ statnet Statnet มีฟังก์ชั่นสำหรับการวัดที่ใช้กันทั่วไปทั้งหมดใน SNA และยังสามารถประมาณค่ารุ่น ERG ได้อีกด้วย หากคุณมีข้อมูลของคุณอยู่ในรายการขอบอ่านในข้อมูลดังต่อไปนี้ (สมมติว่ากรอบข้อมูลของคุณมีข้อความ "edgelist"):

net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE

หากข้อมูลของคุณอยู่ในเมทริกซ์คำคุณสามารถแทนที่อาร์กิวเมนต์ matrix.type ด้วย "adjacency":

net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)

แพคเกจ statnet มีความสามารถในการวางแผนที่ดีมาก หากต้องการพล็อตแบบง่ายให้พิมพ์:

gplot(net)

หากต้องการปรับขนาดโหนดตามความเป็นศูนย์กลางระหว่างการดำเนินการให้ทำดังนี้

bet <- betweenness(net)
gplot(net, vertex.cex = bet)

โดยค่าเริ่มต้นฟังก์ชัน gplot ใช้อัลกอริทึม Fruchterman-Reingold สำหรับการวางโหนดอย่างไรก็ตามสิ่งนี้สามารถควบคุมได้จากตัวเลือกโหมดตัวอย่างเช่นการใช้ MDS สำหรับการวางตำแหน่งของประเภทโหนด:

gplot(net, vertex.cex, mode = "mds")

หรือใช้รูปแบบวงกลม:

gplot(net, vertex.cex, mode = "circle")

มีความเป็นไปได้อีกมากมายและคู่มือนี้ครอบคลุมตัวเลือกพื้นฐานส่วนใหญ่ ตัวอย่างที่มีอยู่:

net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels

(+1) ไม่เคยใช้แพ็คเกจนี้ แต่ภาพรวมของคุณแนะนำให้ฉันลองดู ดูเหมือนดีตั้งแต่แรกเห็น
chl

3

คำถามที่คล้ายกันถูกถามเกี่ยวกับ cstheory ยังถ้าคุณมีความสนใจเฉพาะในกราฟเชิงระนาบหรือการสร้างภาพบรรณานุกรม

Gephi ถูกกล่าวถึงแล้วที่นี่ แต่ก็มีบางอย่างที่แนะนำในโรงละครด้วยดังนั้นฉันคิดว่านั่นเป็นทางเลือกที่ดี

ตัวเลือกที่ยอดเยี่ยมอื่น ๆ ได้แก่ :

  • Flareมีเครื่องมือสร้างภาพที่เจ๋ง ๆ และสร้างกราฟิคสวย ๆ สำหรับรายงานและเอกสาร
  • Cyptoscapeมีเครื่องมือการวิเคราะห์และการสร้างภาพที่มีประสิทธิภาพมาก เหมาะอย่างยิ่งสำหรับวิชาเคมีและอณูชีววิทยา
  • เว็บไซต์นี้มีลิงก์ไปยังเครื่องมือสร้างภาพและห้องสมุดที่ดีอื่น ๆ (แม้ว่าไม่ใช่สำหรับ R)

2

ฉันพบว่าNodeXLมีประโยชน์มากและใช้งานง่าย เป็นเทมเพลต MS Excel ที่ให้การนำเข้า / ส่งออกกราฟการจัดรูปแบบของขอบ / จุดยอดง่ายคำนวณเมทริกบางตัวมีอัลกอริทึมการจัดกลุ่มบางอย่าง คุณสามารถใช้รูปภาพที่กำหนดเองเป็นจุดยอดได้อย่างง่ายดาย
เครื่องมือที่เป็นประโยชน์อีกอย่างสำหรับฉันคือเลย์เอาต์ Microsoft Automatic Graphซึ่งให้เลย์เอาต์ที่ดีสามารถลองออนไลน์ได้ (พร้อมเบราว์เซอร์ที่รองรับ SVG)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.