@floatsdではこれが遅すぎるかもしれないが、私は今日これに苦しんでいて、答えが見つからないので、他人を助けるかもしれない。
最初に、一般に、asp
と呼ばれるiplot.graph
の属性があり、これは非常に簡単にプロットの矩形を制御します。簡単に行う
l=layout.bipartite(CCM_net)
plot(CCM_net, layout=l, asp=0.65)
広いプロットの場合asp
が1より小さいと広いプロットが得られ、asp
は1より大きいプロットです。
ただし、これでは依然として必要なレイアウトが得られない場合があります。 bipartiteコマンドは、基本的にあなたの頂点の座標を持つ行列を生成します。実際にはx座標がどのようになっているかは分かりません。 以下の例(私はあなたのデータを、エッジリストとエッジ/頂点属性を持つデータフレームに変換してグラフを作成する方法を理解していると仮定しています。 私のデータはCCM_data_sign
あると
from to value
2 EVI MAXT 0.67
4 EVI MINT 0.81
5 EVI P 0.70
7 EVI SM 0.79
8 EVI AMO 0.86
11 MAXT EVI 0.81
18 MAXT AMO 0.84
21 MEANT EVI 0.88
28 MEANT AMO 0.83
29 MEANT PDO 0.71
31 MINT EVI 0.96
39 MINT PDO 0.78
40 MINT MEI 0.66
41 P EVI 0.91
49 P PDO 0.77
50 P MEI 0.71
51 PET EVI 0.90
58 PET AMO 0.89
59 PET PDO 0.70
61 SM EVI 0.94
68 SM AMO 0.90
69 SM PDO 0.81
70 SM MEI 0.73
74 AMO MINT 0.93
76 AMO PET 0.66
79 AMO PDO 0.71
80 AMO MEI 0.83
90 PDO MEI 0.82
私はグラフ作成用に生成されたデータフレームはCCM_net
と呼ばれています。 任意のレイアウト調整
V(CCM_net)$size<-30
l=layout.bipartite(CCM_net)
plot(CCM_net,
layout=l,
edge.arrow.size=1,
edge.arrow.width=2,
vertex.label.family="Helvetica",
vertex.label.color="black",
vertex.label.cex=2,
vertex.label.dist=c(3,3,3,3,3,3,3,3,3,3,3),
vertex.label.degree=c(pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,pi/2,pi/2,pi/2), #0 is right, “pi” is left, “pi/2” is below, and “-pi/2” is above
edge.lty=1)
ない最初の二部グラフこれは、あなたの次 ![regualt_bipartite](https://i.stack.imgur.com/ZboK9.jpg)
私はasp
を使用している場合は、私はこれを見ている以下の
plot(CCM_net,
layout=l,
edge.arrow.size=1,
vertex.label.family="Helvetica",
vertex.label.color="black",
vertex.label.cex=2,
vertex.label.dist=c(3,3,3,3,3,3,3,3,3,3,3),
vertex.label.degree=c(pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,pi/2,pi/2,pi/2), #0 is right, “pi” is left, “pi/2” is below, and “-pi/2” is above
edge.arrow.width=2,
edge.lty=1,
asp=0.6) # controls how rectangular the plot is. <1 = wide, >1 = tall
dev.off()
![bipartite_with asp](https://i.stack.imgur.com/kvnxH.jpg)
を得るを与えますより良い、しかし、私は本当に必要なものではない - sいくつかの頂点が他の頂点とどのように接近しているか 結局私は次のようなアプローチをとった。座標を設定すると、二部は、この行列は、最初の列にあなたの頂点のx座標を示し、yは名前のリストに従って順序付け、2列目の座標この
coords <- layout_as_bipartite(CCM_net)
coords
[,1] [,2]
[1,] 3.0 0
[2,] 0.0 1
[3,] 2.0 1
[4,] 3.5 1
[5,] 6.0 1
[6,] 1.0 1
[7,] 5.0 1
[8,] 7.0 1
[9,] 1.0 0
[10,] 4.5 0
[11,] 5.5 0
のように見えるよう。名前の私のリストには、私のグラフで
id name
1 EVI EVI
2 MAXT MAXT
3 MEANT MEANT
4 MINT MINT
5 P P
6 PET PET
7 SM SM
8 SR SR
9 AMO AMO
10 PDO PDO
11 MEI MEI
で、EVI、AMOとPDOは下部にありますが、彼らのx座標注意:3.0、1.0、4.5および5.5。私はコードがどうなっているのかまだ分かっていないが、私はそれが気に入らないので単純に変更した。
coords[,1]=c(2,0,4,8,12,16,20,24,9,16,24)
次にプロットコード(また、
asp
を有する)、出力は今頂点がうまく矩形プロットで離間さ
plot(CCM_net,
layout=coords,
edge.arrow.size=1,
vertex.label.family="Helvetica",
vertex.label.color="black",
vertex.label.cex=1,
vertex.label.dist=c(4,4,4,4,4,4,4,4,4,4,4),
vertex.label.degree=c(pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,-pi/2,pi/2,pi/2,pi/2), #0 is right, “pi” is left, “pi/2” is below, and “-pi/2” is above
edge.arrow.width=2,
edge.lty=1,
asp=0.6) # controls how rectangular the plot is. <1 = wide, >1 = tall
![bipartite_final](https://i.stack.imgur.com/rRX4c.jpg)
なります!
注 - わかりやすくするために、頂点のサイズ、ラベルのサイズ、およびそれらの配置も減らしました。