簡體   English   中英

如何在R中繪制有向無環格子圖

[英]How to plot directed acyclic lattice graph in R

我需要繪制尺寸為mxn的有向無環格子圖,類似於此圖片,但是輪廓上沒有邊緣,角落上沒有頂點:

在此處輸入圖片說明

這可能與graph.lattice函數有關嗎? 如果是,如何設置此類頂點的標簽(即(x,y)格式,而不僅僅是整數)並刪除提到的邊線和頂點? 此外,是否可以在不使用tkplot函數並旋轉的情況下將圖形繪制在這樣的位置(如在圖片中)?

我不確定“輪廓上沒有邊緣”是什么意思,但是這里有幾點:

  • 閱讀?igraph.plotting以獲取繪圖參數的完整列表。
  • 如果您不希望在頂點上使用框架,請將vertex.frame.color設置為與vertex.color相同的值。
  • 使用layout.grid ,請參閱?layout.grid
  • 使用vertex.label設置標簽。
  • 如果要忽略某些邊緣,請刪除它們,或將其寬度設置為零,或將其顏色設置為背景色。
  • 如果要省略一些頂點,請附加由layout.grid計算的坐標作為頂點屬性,然后從圖形中刪除這些頂點。

這樣的事情可能會起作用:

g <- graph.lattice( c(5,5) )
lay <- layout.grid(g)
V(g)$x <- lay[,1]
V(g)$y <- lay[,2]
V(g)$color <- V(g)$frame.color <- "darkolivegreen"
V(g)$label.color <- "lightgrey"
V(g)$label <- paste(V(g)$x+1, V(g)$y+1, sep=",")

要刪除邊緣,可以根據頂點的坐標選擇它們:

torem <- c(E(g)[ V(g)[x==0] %--% V(g)[x==0] ], 
           E(g)[ V(g)[y==0] %--% V(g)[y==0] ], 
           E(g)[ V(g)[x==4] %--% V(g)[x==4] ], 
           E(g)[ V(g)[y==4] %--% V(g)[y==4] ])
g2 <- delete.edges(g, torem)

然后刪除頂點並繪制:

g3 <- delete.vertices(g2, V(g2)[ x %in% c(0,4) & y %in% c(0,4) ])
plot(g3, layout=cbind(V(g3)$x, V(g3)$y))

情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM