2

[更新] 以下は、私が達成しようとしている例です。また、任意のプロットを平準化するためのより一般的な手法にも興味があります。Gabor ソリューションのように手動で行う必要がないように、頂点をプロットした後に視覚的に調整するための GUI メソッドはありますか? 私はそれを行う方法を見つけました。以下の私の答えを参照してください。しかし、時間をかけてより一般的にしてください。

ゴール

ここに画像の説明を入力

失敗

library(igraph)
g4<-graph.formula(Out-1:3:5:6,1-2,3-4,5:6-7,2:4:7-In)
tkplot(g4)

ここに画像の説明を入力

4

2 に答える 2

2

ただし、頂点の位置を手動で設定する必要があります。

これは完全に正しくありません。より簡単なインタラクティブな方法を示します。Greg Snow による以下のコードを使用します。

dynmodfunc <- function() {
    plot(0:1,0:1,ann=FALSE,type='n')
    mypoints <- matrix(ncol=2, nrow=0)
    while( length(p <- locator(1, type='p', col='red')) ) {
        mypoints <- rbind(mypoints, unlist(p))
        plot(mypoints, col='red', ann=FALSE, xlim=0:1, ylim=0:1)
        if(nrow(mypoints)>1) {
            xspline(mypoints, shape=-1)
        }
    }
    mypoints
}

(out <- dynmodfunc())

この優位性グラフをプロットしたい

ここに画像の説明を入力

しかしadjm<-t(matrix(c(0,0,0,0,1,1,0, 0,0,0,0,1,1,0, 0,0,0,0,1,1,0, 0,0,0,0,1,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 1,1,1,1,0,0,0),nrow=7,ncol=7)); g1<-graph.adjacency(adjm); plot(g1)生成します

ここに画像の説明を入力

Greg のコードを使用します。GUI 上のポイントをクリックしてから、マウスの右ボタンをクリックします。

ここに画像の説明を入力

行またはデバッグで示されているように、7-1-2-3-4-5-6 の順序でポイントがあります。

> out
             x          y
[1,] 0.5082585 1.03551763
[2,] 0.1067841 0.59191675
[3,] 0.3818711 0.59358184
[4,] 0.6380311 0.58883584
[5,] 0.8787300 0.58464820
[6,] 0.3417308 0.09010765
[7,] 0.6614686 0.07504212
> str(out);dput(out)
 num [1:7, 1:2] 0.508 0.107 0.382 0.638 0.879 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "x" "y"
structure(c(0.508258492696219, 0.106784127536735, 0.381871061286441, 
0.63803114223351, 0.878729976271015, 0.341730770349654, 0.661468641881514, 
1.03551763062279, 0.591916752784156, 0.593581838904923, 0.588835844931958, 
0.584648203191106, 0.0901076547476853, 0.0750421150561933), .Dim = c(7L, 
2L), .Dimnames = list(NULL, c("x", "y")))

そして今、Gabor Csardiのソリューションによって、平準化されたプロットを取得できるはずです。これで、各ポイントの共起マトリックスajdmと座標が得られました。coordsガボールの方法でそれらを使用する方法はまだわかりません。理解しようとしています。

コピー&ペーストを高速化するためのコード

> library(igraph); 
> coords<-structure(c(0.508258492696219, 0.106784127536735, 0.381871061286441, 0.63803114223351, 0.878729976271015, 0.341730770349654, 0.661468641881514, 1.03551763062279, 0.591916752784156, 0.593581838904923, 0.588835844931958, 0.584648203191106, 0.0901076547476853, 0.0750421150561933), .Dim = c(7L, 2L), .Dimnames = list(NULL, c("x", "y")))
> adjm<-t(matrix(c(0,0,0,0,1,1,0,   0,0,0,0,1,1,0,   0,0,0,0,1,1,0,   0,0,0,0,1,1,0,   0,0,0,0,0,0,0,    0,0,0,0,0,0,0,   1,1,1,1,0,0,0),nrow=7,ncol=7)); g1<-graph.adjacency(adjm); plot(g1)
于 2013-04-01T13:29:15.160 に答える