簡體   English   中英

如何用R(通過iGraph,network或其他軟件包)在R的邊緣兩邊繪制文本的有向網絡圖?

[英]How to draw a directed network graph with texts on both sides of edges in R (via iGraph, network or some other package)?

如何用R(通過iGraph,network或其他軟件包)在R的邊緣兩邊繪制文本的有向網絡圖?

有向網絡圖,邊緣兩邊都有文字

變量(在向量自回歸模型(VAR)中)在節點中。

格蘭傑因果關系(F統計的p值)在邊的兩側。 我將p值放在每個箭頭的開頭。 我加重強調,得出了近乎重大的因果關系。

我不知道如何通過iGraph或網絡程序包或其他方法獲得這樣的網絡圖。

閱讀有關igraph繪圖功能文檔,似乎沒有很多選擇可以操作邊緣標簽,但是您可以使用label.dist和label.degree等操作頂點標簽。您可以執行以下操作:

g <- graph.empty(n = 3) 
g <- graph(c(1, 2, 3, 2, 1, 3), directed = TRUE)
labels <- c("A", "B", "C", "D", "E", "F")
coords <- matrix(c(1, 1, 2, 2, 3, 3), nrow = 3)
plot(g, layout = coords, vertex.label = labels, vertex.label.dist = 3.5, vertex.label.degree = c(-pi/4, pi/2, pi, -pi/2, 0, 3*pi/4))

圖形

可以同時使用edge.labelvertex.label選項。

library(igraph)
el <- data.frame(sender = c("lnbist1f","lnbist1f","lnbist1f",
                            "kur1f","kur1f","kur1f",
                            "lnaltin","lnaltin","lnaltin",
                            "mfaiz1f","mfaiz1f","mfaiz1f"),
                 receiver = c("mfaiz1f","lnaltin","kur1f",
                              "lnbist1f","lnaltin","mfaiz1f",
                              "mfaiz1f","lnbist1f","kur1f",
                              "lnbist1f","lnaltin","kur1f"),
                 pval = c(0.5,0.6,0.1, #I just typed random p-vals here
                          0.45,0.88,0.24,
                          0.12,0.51,0.99,
                          0.001,0.056,0.123)
                 )
arrows = c(2,1,0,0,1,1,1,0,0,2,1,1)
el <- as.matrix(el)
g <- graph_from_edgelist(el[,1:2], directed = T)
coordinates <- matrix(c(4, 4, 1, 1, 4, -2,7,1), nrow = 4, byrow=TRUE)
plot(g, edge.label=el[,3], 
     vertex.shape="crectangle", 
     vertex.size=45,
     edge.arrow.mode=arrows,
     layout = coordinates)

edge.arrow.mode可讓您控制箭頭。 您可以使用edge.label.yedge.label.x選項來移動邊緣標簽。

圖形圖

暫無
暫無

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

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