R:从数据帧自动创建图形
R: Automatically Creating Graphs from Dataframes
我正在使用 R 编程语言。
我有以下数据集(route_1):
route_1
id long lat
1 1 -74.56048 40.07051
3 3 -72.44129 41.71506
4 4 -77.53908 41.55434
2 2 -74.23018 40.12929
6 6 -78.68685 42.35981
5 5 -79.26506 43.22408
基于这些数据,我想制作一个有向网络图,其中每一行仅链接到紧随其后的行。使用“igraph”库,我能够手动执行此操作:
library(igraph)
my_data <- data.frame(
"node_a" = c("1", "3", "4", "2", "6"),
"node_b" = c("3", "4", "2", "6", "5")
)
graph <- graph.data.frame(my_data, directed=TRUE)
graph <- simplify(graph)
plot(graph)
我的问题:是否可以直接使用“route_1”数据集制作上述网络图,而无需手动创建包含信息的新数据集在哪个节点上连接到哪个节点?
谢谢!
数据集是否总是会被正确排序,所以绘图会从第 1->2->3 行等排成一行?如果是这样,我们可以通过简单地对 ID 列进行子集化来制作节点信息数据框。如果我们把这些步骤放在一个函数中,它就变成了一个简单的 1-liner:
plot_nodes <- function(x) {
id = x$id
a = id[1:length(id)-1]
b = id[2:length(id)]
graph.data.frame(data.frame(a,b), directed=TRUE)
}
graph <- plot_nodes(route_1)
plot(simplify(graph))
我正在使用 R 编程语言。
我有以下数据集(route_1):
route_1
id long lat
1 1 -74.56048 40.07051
3 3 -72.44129 41.71506
4 4 -77.53908 41.55434
2 2 -74.23018 40.12929
6 6 -78.68685 42.35981
5 5 -79.26506 43.22408
基于这些数据,我想制作一个有向网络图,其中每一行仅链接到紧随其后的行。使用“igraph”库,我能够手动执行此操作:
library(igraph)
my_data <- data.frame(
"node_a" = c("1", "3", "4", "2", "6"),
"node_b" = c("3", "4", "2", "6", "5")
)
graph <- graph.data.frame(my_data, directed=TRUE)
graph <- simplify(graph)
plot(graph)
我的问题:是否可以直接使用“route_1”数据集制作上述网络图,而无需手动创建包含信息的新数据集在哪个节点上连接到哪个节点?
谢谢!
数据集是否总是会被正确排序,所以绘图会从第 1->2->3 行等排成一行?如果是这样,我们可以通过简单地对 ID 列进行子集化来制作节点信息数据框。如果我们把这些步骤放在一个函数中,它就变成了一个简单的 1-liner:
plot_nodes <- function(x) {
id = x$id
a = id[1:length(id)-1]
b = id[2:length(id)]
graph.data.frame(data.frame(a,b), directed=TRUE)
}
graph <- plot_nodes(route_1)
plot(simplify(graph))