2012-03-27 70 views
1

考慮用igraph生成的非常簡單的無向圖的圖。無向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.是否有消除這一差距的一種方式?

我真正在使用的圖形較大,邊緣較短的邊緣很多 。雖然在上面的例子中差距幾乎沒有被注意到,但在我的情況下,它是 混淆。

+0

這個罰款對我的作品對我來說。我知道你所描述的事情往往會發生,如果你試圖在一個非平方的陰謀區域進行陰謀,但我不記得你是如何實際做到這一點的。相關的,你可以嘗試我的包''庫(「qgraph」); qgraph(邊緣)''在這個行爲不應該發生。 – 2012-03-27 11:32:08

+1

我在Windows下看到問題。窗口大小調整後,差距會增大。在這種情況下,這是一個很小的差距,但我非常感謝你爲完美而努力。你可以使用'layout()'('igraph'函數)來返回頂點的座標,然後從頭開始繪製你自己的圖形。先繪製邊緣然後頂點頂點。 – digitalmaps 2012-03-28 00:45:05

+0

可能是一個錯誤。順便說一句。如果調整圖的大小,那麼最好重新繪製它,因爲重新縮放可能會放大舍入誤差。最好在https://bugs.launchpad.net/igraph報告igraph錯誤。 – 2013-02-06 02:53:29

回答

1

這確實是igraph中的一個bug,它發生的原因是igraph在那裏爲箭頭留下一些空間,即使箭頭不在那裏。我將在下一個igraph版本中修復它。

作爲一種解決方法,您可以做的是將每個邊緣兩次繪製在彼此之上。爲此,您需要定向圖形,然後使用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") 

gap

# 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="-") 

no gap

+0

感謝您的解決方法!這對我來說很好! – severin 2013-02-06 21:04:49

1

我閱讀?igraph頁面,並看到了一個建議,使用'好看的反鋸齒開羅設備'?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版本的樣子有不小的差距

讓我知道它是否適合你。

+0

謝謝指出!我沒有嘗試過,因爲我實際上使用了一個[tikz](http://pgf.sourceforge.net/)設備,它也會產生差距。 – severin 2012-05-22 15:46:49

+0

@severin,並從你寫的我假設你不能使用上面的解決方案,但需要使用tikz解決方案? – 2012-05-22 23:21:40

+0

由於某種原因,我錯過了去年的問題。抱歉!是的,不幸的是,我必須使用tikz設備。 – severin 2013-02-05 12:51:13

相關問題