В R: есть ли способ визуализации графа для двух групп узлов разной длины?
Я хотел бы создать график из двух разных наборов узлов, которые имеют разную длину. Вы можете найти коды ниже.
Как видите, я получаю сообщение об ошибке: Ошибка: длина (от) == длина (до) не является ИСТИННЫМ!! Есть ли решение для этого?
Буду признателен за вашу помощь!
library(DiagrammeR)
g1<- c("a","b","c")
g2<-c("d","f")
#creating a node data frame
nodes1<- create_node_df(n=length(g1),
style= "filled",
color= "lightblue",
shape= "box")
nodes2<- create_node_df(n=length(g2),
style= "filled",
color= "lightblue",
shape= "box")
edges<-create_edge_df(from = g1,
to= g2,
rel= "related",
color= "black")
Error: length(from) == length(to) is not TRUE
all_nodes<- combine_ndfs(nodes1, nodes2)
create_graph(nodes_df = all_nodes,
edges_df = edges,
directed = TRUE)
1 ответ
Я подозреваю, что вы имеете в виду соединение каждой вершины g1
с каждым из g2
, После определения nodes1
а также nodes2
, позволять
(all_nodes <- combine_ndfs(nodes1, nodes2))
# id type label style color shape
# 1 1 <NA> <NA> filled lightblue box
# 2 2 <NA> <NA> filled lightblue box
# 3 3 <NA> <NA> filled lightblue box
# 4 4 <NA> <NA> filled lightblue box
# 5 5 <NA> <NA> filled lightblue box
Поскольку позже мы собираемся использовать эту переменную в create_graph
, мы хотим соединить каждый из 1, 2, 3 с каждым из 4 и 5. Чтобы построить правильные аргументы для create_edge_df
мы собираемся использовать rep
; потому что, как ?create_edge_df
говорит,
from - вектор значений идентификатора узла, из которого выходят ребра. Длина вектора должна быть равна длине вектора.
to - вектор значений идентификатора узла, в который входят ребра. Длина вектора должна быть равна длине вектора from.
Так,
edges <- create_edge_df(from = rep(1:3, 2), to = rep(4:5, each = 3),
rel = "related", color = "black")
create_graph(nodes_df = all_nodes, edges_df = edges, directed = TRUE)