2011-04-04 27 views
5

R'de hiçbir grafik çizme paketi kullanmadım, temel çizim komutlarını ve ggplot2 paketini biliyorum. Ne buldum (ama henüz denemedim) Rgraphviz, network ve igraph paketleridir. İki arasındaki çoklu kenarlarını (rastgele ... bahar düzenini)Yönlendirilmiş çoklu grafikleri R

  • basit düzen motorları Has
  • çalışır: Yani en basit öğrenme eğrisi ve tatmin aşağıdaki şartların olan paket, size sormak istiyorum Köşeleri böylece üst üste gelmezler. Bonus olarak bunu ayarlayabilmek güzel olurdu.
  • Döngüler çizebilir.
  • Vertex ve kenar etiketleri, köşe ve kenar boyutu ve rengi ayarlanabilir.

cevap

3

igraph paket tkplot() fonksiyon yardım ayarlama ile sizin gereklerini yerine getirmek gibi görünüyor

  • (varsa bağlantı analizi, en kısa yolu, maksimum akış vb, ama güzel gibi grafik algoritmaları herhangi gerek yok,) gerekirse son düzen. İşte

    kullanımına ilişkin bir örnektir: interaktif ekran (3D ekran için rgl kullanmanın bir olasılık var), bu gibi görünüyor ile

    s <- cbind(A=sample(letters[1:4], 100, replace=TRUE), 
          B=sample(letters[1:2], 100, replace=TRUE)) 
    s.tab <- table(s[,1], s[,2]) 
    library(igraph) 
    s.g <- graph.incidence(s.tab, weighted=T) 
    plot(s.g, layout=layout.circle, 
        vertex.label=c(letters[1:4],letters[2:1]),  
        vertex.color=c(rep("red",4),rep("blue",2)), 
        edge.width=c(s.tab)/3, vertex.size=20, 
        vertex.label.cex=3, vertex.label.color="white") 
    

    enter image description here

    (Biraz sonra bir tepeye taşınmış):

    tkplot(s.g, layout=layout.circle, vertex.color=c(rep("red",4),rep("blue",2))) 
    

    enter image description here

    Son olarak, grafiği grafik kartı için dot gibi en yaygın biçime bile aktarabilirsiniz.

  • +0

    teşekkür ederiz. Tekrar grafikleri çizmem gerektiğinde, igraph yapmayı deneyeceğim! Sadece infos için, soruyu sorduğumda ve orijinal görevimi yeniden formüle ederek çok sayıda kenar çizme gereksiniminden kurtulduktan sonra RGraphviz ile gittim. – Timo

    +0

    @Timo Graphviz ile yolunuzu bulduğunuzu duymak güzel. Bende çok kullanıyorum. Sadece 'igraph' en güçlü IMO. (btw, benim Q1'im, cevap verdiğimde oyların dışındaydım :-) – chl

    2

    multigraph R paketi de kullanışlı olabilir. Yukarıdaki örnek için bmgraph araziler gibi grafik:



    ve yönlendirilmiş bir versiyonu için

    library("multigraph") 
    bmgraph(s.tab, layout = "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9) 
    

    enter image description here

    :

    bmgraph(s.tab, "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9, directed = TRUE) 
    

    enter image description here