如何在 R 的边缘两侧绘制带有文本的有向网络图(通过 iGraph、网络或其他一些包)?
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 或其他包)绘制带文本的有向网络图?
变量(在向量自回归模型 (VAR) 中)在节点中。
Granger 因果关系(F 统计的 p 值)在边缘的两侧。我将 p 值放在每个箭头的开头。我画了近乎重要的因果关系并加了强调。
我不知道如何通过 iGraph 或网络包或其他方式获得这样的网络图。
阅读 documentation on the igraph plot function 似乎没有很多选项来操作边标签,但是您可以使用 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))
Graph
您可以同时使用 edge.label
和 vertex.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.y
和 edge.label.x
选项移动边缘标签。
如何在 R 中(通过 iGraph、network 或其他包)绘制带文本的有向网络图?
变量(在向量自回归模型 (VAR) 中)在节点中。
Granger 因果关系(F 统计的 p 值)在边缘的两侧。我将 p 值放在每个箭头的开头。我画了近乎重要的因果关系并加了强调。
我不知道如何通过 iGraph 或网络包或其他方式获得这样的网络图。
阅读 documentation on the igraph plot function 似乎没有很多选项来操作边标签,但是您可以使用 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))
Graph
您可以同时使用 edge.label
和 vertex.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.y
和 edge.label.x
选项移动边缘标签。