簡體   English   中英

DiagrammeR:從最小節點和邊緣數據框創建圖形

[英]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_dfcrete_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM