Grafik teorisi - analiz ve görselleştirme


22

Konunun CrossValidated faizine girdiğinden emin değilim. Bana söyleyeceksin.

Bir grafiği incelemeliyim ( grafik teorisinden ). Bağlanan belli sayıda nokta var. Her birinin bağlı olduğu tüm noktalar ve noktalar içeren bir masam var. (Ayrıca sonuçları olan başka bir tablom var)

Sorum şu:
Kolayca çalışmak için iyi bir yazılım (veya bir R paketi) var mı?
Grafiği görüntülemek için kolay bir yol var mı?


Ben kullanımı denedi cran.r-project.org/web/packages/graph/vignettes/graph.pdf ama paketi "Rgraphviz" artık kullanılamaz seams. Başka bir çözümü olan var mı?
RockScience


1
Teşekkürler! Graphviz mükemmel ve çok esnektir, R 'yi Rgraphviz arayüzüyle kullanıyorum ve harika çalışıyor.
RockScience

Yanıtlar:


15

iGraph çok ilginç bir çapraz dil (R, Python, Ruby, C) kütüphanesidir. Tek yönlü ve yönlendirilmiş grafiklerle çalışmanıza izin verir ve hali hazırda uygulanmış olan birkaç analiz algoritmasına sahiptir.


1
(+1) Görünüşe göre cevabım seninkinden sonra geldi. Yanıtınız biraz farklı bir bakış açısına vurgu yaptığında (platformlar arası, algoritmalar), yanıtlarımızın çok fazla olmadığını sanıyorum, ancak mayını herhangi bir prob olmadan kaldırabilirim.
chl

14

Grafiğe ek olarak yönlendirilmiş ve yönlendirilmemiş grafikleri, insidans / bitişik matrisi vb. Temsil etmek için çeşitli paketler vardır ; Örneğin, gR Görev görünümüne bakın.

Görselleştirme ve temel hesaplama için, bence iGRAPH paketi ek olarak güvenilir biridir Rgraphviz (@Rob tarafından sivri out gibi BioC üzerine). İkincisinin düzgün çalışabilmesi için graphviz'in de yüklenmesi gerektiğini unutmayın. İGRAPH paketi çok gibi, iyi düzenleri oluşturmak için güzel algoritmaları vardır graphviz .

Sahte bir bitişiklik matrisinden başlayarak kullanım örneği:

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

alt metin


Cevabınız için teşekkürler. graphviz, R ile kurulumu kolay değil, fakat harika bir kütüphane olmak için dikiş
atıyor

FYI şimdi yaptığım, R ile graphviz kodunu üretmem ve mediawiki graphviz eklentisini kullanarak bir mediawiki'de okudum. (Rgraphviz paketinin kurulumu kolay değildir ve R'nin son sürümüyle çalışmaz)
RockScience

"Paket 'grafik' CRAN deposundan kaldırıldı."
bartektartanus


8

Başka bir seçenek statnet paketidir. Statnet, SNA'da yaygın olarak kullanılan tüm önlemler için fonksiyonlara sahiptir ve ayrıca ERG modellerini de tahmin edebilir. Verilerinizi kenar listesinde varsa, verileri aşağıdaki şekilde okuyun (veri çerçevenizin "edgelist" olarak etiketlendiğini varsayarak):

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

Verileriniz bir bitişik matriste ise, matrix.type argümanını "adjacency" ile değiştirirsiniz:

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

Statnet paketi çok güzel çizim yeteneklerine sahiptir. Basit bir arsa yapmak için sadece şunu yazın:

gplot(net)

Düğümleri ağırlık merkeziyetlerine göre ölçeklendirmek için yapmanız gerekenler:

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

Varsayılan olarak gplot işlevi, düğümleri yerleştirmek için Fruchterman-Reingold algoritmasını kullanır, ancak bu, düğüm türünün yerleştirilmesi için MDS kullanmak için mod seçeneğinden kontrol edilebilir:

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

veya bir daire düzeni kullanmak için:

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

Daha birçok olasılık var ve bu kılavuz temel seçeneklerin çoğunu kapsıyor. Kendi kendine yeten bir örnek için:

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) Bu paketi hiç kullanmamış, ancak genel bakışınız denemem gerektiğini söylüyor. İlk bakışta iyi görünüyor.
chl

3

Bir benzer soru Özellikle ilgilenen edilir ayrıca eğer cstheory üzerinde istendi düzlemsel grafikler veya bibliyografik görselleştirme .

Gephi burada çoktan bahsedildi, ancak birkaç kişi tarafından cstheory tarafından da önerildi, bu yüzden bence bu iyi bir seçim.

Diğer harika seçenekler şunlardır:

  • Flare , gerçekten harika görselleştirme araçları sunar ve raporlar ve makaleler için çok güzel grafikler oluşturur.
  • Cyptoscape bazı çok güçlü analiz ve görselleştirme araçlarına sahiptir. Özellikle kimya ve moleküler biyoloji için iyidir.
  • Bu web sitesi diğer birçok güzel görselleştirme araçlarına ve kütüphanelerine bağlantı sağlar (R için olmasa da).

2

NodeXL'i çok faydalı ve kullanımı kolay buldum . Bir grafiğin kolay içe / dışa aktarılmasını sağlayan, kenarların / köşelerin biçimlendirildiği, bazı metrikleri hesaplayan, bazı kümeleme algoritmalarına sahip bir MS Excel şablonu. Özel görüntüleri kolayca köşe olarak kullanabilirsiniz.
Benim için bir başka yararlı araç da, çevrimiçi olarak denenebilecek iyi bir düzen sağlayan Microsoft Otomatik Grafik düzeni idi (SVG'yi destekleyen bir tarayıcıyla).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.