使用ggraph绘制空间坐标为lat long的图形

时间:2017-05-04 16:38:16

标签: r plot geospatial igraph ggraph

我有一个使用igraph创建的图表,其中每个节点都有latlong的空间位置。我想使用ggraph使用这些空间坐标来绘制此网络,以定义节点的位置/布局。关于如何做到这一点的任何想法?

我知道可以在igraph中执行此操作(请参阅下面的可重复示例),但我更喜欢使用ggraph执行此操作,特别是因为我想添加{{1}图层到图。

可重复的例子

ggmap

使用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

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以通过将igraphX属性设置为顶点,将坐标直接添加到Y中的图表对象。 ggraph将识别属性并相应地绘制顶点。

V(g)$x<-lo[,1]
V(g)$y<-lo[,2]

#plot
ggraph(g)+
  geom_edge_link()+
  geom_node_point()