使用 ggraph 绘制具有空间坐标 lat long 的图形
Plot a graph with spatial coordinates lat long using ggraph
我有一个用 igraph
创建的图表,其中每个节点都有一个空间位置 lat
和 long
。我想使用 ggraph
来绘制这个网络,使用这些空间坐标来定义节点的 position/layout。关于如何做到这一点有什么想法吗?
我知道可以在 igraph
中执行此操作(请参阅下面的可重现示例),但我更喜欢使用 ggraph
执行此操作,特别是因为我想添加一个 [=18] =]层的情节。
可重现的例子
library(igraph)
library(ggraph)
# create network
# nodes
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David","Esmeralda"),
age=c(48,33,45,34,21),
gender=c("F","M","F","M","F"),
long=c(-43.17536, -43.17411, -43.36605, -43.19155, -43.33636),
lat=c(-22.95414, -22.9302, -23.00133, -22.90353, -22.87253))
# edges
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David","David", "Esmeralda"),
to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
# Graph
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)
使用空间坐标绘制网络 igraph
# get lat long coordinates for the layout
lo <- layout.norm(as.matrix(actors[, c("long","lat")]))
#plot
plot.igraph(g, layout=lo, rescale=T, vertex.label= NA)
您可以通过为顶点设置 X
和 Y
属性,将坐标直接添加到 igraph
中的图形对象。 ggraph
将识别属性并相应地绘制顶点。
V(g)$x<-lo[,1]
V(g)$y<-lo[,2]
#plot
ggraph(g)+
geom_edge_link()+
geom_node_point()
我有一个用 igraph
创建的图表,其中每个节点都有一个空间位置 lat
和 long
。我想使用 ggraph
来绘制这个网络,使用这些空间坐标来定义节点的 position/layout。关于如何做到这一点有什么想法吗?
我知道可以在 igraph
中执行此操作(请参阅下面的可重现示例),但我更喜欢使用 ggraph
执行此操作,特别是因为我想添加一个 [=18] =]层的情节。
可重现的例子
library(igraph)
library(ggraph)
# create network
# nodes
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David","Esmeralda"),
age=c(48,33,45,34,21),
gender=c("F","M","F","M","F"),
long=c(-43.17536, -43.17411, -43.36605, -43.19155, -43.33636),
lat=c(-22.95414, -22.9302, -23.00133, -22.90353, -22.87253))
# edges
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David","David", "Esmeralda"),
to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
# Graph
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)
使用空间坐标绘制网络 igraph
# get lat long coordinates for the layout
lo <- layout.norm(as.matrix(actors[, c("long","lat")]))
#plot
plot.igraph(g, layout=lo, rescale=T, vertex.label= NA)
您可以通过为顶点设置 X
和 Y
属性,将坐标直接添加到 igraph
中的图形对象。 ggraph
将识别属性并相应地绘制顶点。
V(g)$x<-lo[,1]
V(g)$y<-lo[,2]
#plot
ggraph(g)+
geom_edge_link()+
geom_node_point()