1

igraphで作成された非常に単純な無向グラフのプロットを考えてみましょう。

library(igraph)

edges = matrix(c(1,2), nrow=1, ncol=2)
g = graph.edgelist(edges, directed=FALSE)
set.seed(42)
plot(g, edge.width=2, vertex.size=30, edge.color='black', main='')

エッジと頂点2の間には小さなギャップがありますが、エッジと頂点1の間にはありません。そのギャップを取り除く方法はありますか?

私が実際に使用しているグラフは大きく、エッジははるかに短くなっています。上記の例ではギャップはほとんど見過ごされていますが、私の場合は混乱を招きます。

4

2 に答える 2

1

このページを読んで?igraph、「見栄えの良いアンチエイリアスカイロデバイス」を使用することをお勧めします

だから、やってみた

library(Cairo)
Cairo(1600, 1600, file="plot.png", type="png", bg="white")
plot(g, edge.width=2, vertex.size=30, edge.color='black', main='')
dev.off()

と、

CairoPDF("plot.pdf", 6, 6, bg="transparent")
plot(g, edge.width=2, vertex.size=30, edge.color='black', main='')
dev.off()

png版とpdf版はどちらも小さなギャップがないように見えます。

それがあなたのために働くかどうか私に知らせてください。

于 2012-04-01T04:09:16.017 に答える
1

これは確かにigraphのバグであり、矢印がなくてもigraphが矢印のためにスペースを残しているために発生します。次のigraphバージョンで修正します。

回避策として、実行できるのは、各エッジを2回重ねてプロットすることです。このためには、グラフを有向にしてから、edge.arrow.modeオプションを使用して矢印を回避する必要があります。これが機能するのは、エッジの一方の端だけが矢印プロッタによって変更されるためです。この方法でグラフをプロットするのは少しばかげていますが、今のところ、より良い回避策を見つけることができません。私が言ったように、新しいバージョン(0.6.4以降のもの)にはこの問題はありません。

library(igraph)

# Zoom in on the critical region, although the gap always has the 
# same size, unless you make the plotting window bigger
g <- graph(c(1,2), directed=FALSE)
par(mar=c(0,0,0,0))
plot(g, edge.width=2, vertex.size=20, edge.color='black', main='',
     rescale=FALSE, xlim=c(0.9,1), ylim=c(0.9,1),
     layout=rbind(c(0,0), c(1,1)), vertex.color="#ffffff11")

ギャップ

# This plot should have no gaps
g2 <- as.directed(g, mode="mutual")
par(mar=c(0,0,0,0))
plot(g2, edge.width=2, vertex.size=20, edge.color='black', main='',
     rescale=FALSE, xlim=c(0.9,1), ylim=c(0.9,1),
     layout=rbind(c(0,0), c(1,1)), vertex.color="#ffffff11",
     edge.arrow.mode="-") 

ギャップなし

于 2013-02-06T18:35:44.007 に答える