![](/img/trans.png)
[英]In DiagrammeR, how to create an edge to a node, but not from a node?
[英]DiagrammeR: Create graph from minimal node and edge data frame
我正在嘗試使用DiagrammeR
包基於手動創建的兩個簡單數據框創建圖形。 生成的圖應僅具有兩個節點(“ a”和“ b”),以及連接它們的一條邊線(“ a”->“ b”)。
根據文檔,這似乎應該很容易做到。 從1.0.1版開始的軟件包文檔中,以下是對create_graph()
函數的最少輸入:
nodes_df
:可選數據幀,至少包含一列(稱為id),其中包含該圖的節點ID。 附加列(節點屬性)可以包含在命名節點屬性的值中。
edges_df
:可選數據幀,至少包含兩列(稱為from和to),其中提供了節點ID。 附加列(邊緣屬性)可以包含在命名邊緣屬性的值中。
根據此文檔,似乎至少有以下兩次嘗試定義圖形的嘗試之一:
library(Diagrammer)
options('stringsAsFactors' = FALSE)
# Using integer node IDs
create_graph(nodes_df = data.frame(id = c(1L, 2L)),
edges_df = data.frame(from = 1L, to = 2L))
# Using character node IDs
create_graph(nodes_df = data.frame(id = c('a', 'b')),
edges_df = data.frame(from = 'a', to = 'b'))
但是,嘗試創建圖形的兩種方法,都會收到以下錯誤消息:
Error in `[.data.frame`(nodes_df, , i) : undefined columns selected
為什么通話無法按預期進行? 類似於此處給出的示例,僅通過使用data.frame()
函數創建節點和邊緣數據幀來創建預期圖形的最小方法是什么?
我不確定我是否對您的問題足夠了解,但是,我認為使用create_node_df
和crete_edge_df
而不是使用data.frame
函數可能更好。 我在使用此軟件包時給了您一個示例:
l1 <- c("a", "b", "c")
l2 <- c("b", "c", "d")
# find all the unique nodes
all<- unique(union(l1, l2))
all
#creating a node data frame
nodes<- create_node_df(n= length(all),
style= "filled",
label= all,
color= "lightblue",
shape= "box")
# data frame of edges
edges<-create_edge_df(from = match(l1, all),
to=match(l2, all),
label = all,
rel= "related",
color= "black")
edges
graph<-create_graph(nodes, edges)
render_graph(graph)
干杯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.