如何使用diagrammeR自动创建合作图

时间:2019-04-15 17:36:49

标签: r

我问这个问题是因为我认为这对很多人来说将是一个很棒的功能。

我想为我编写的脚本创建一个consort-type图表,使我可以直观地查看通过脚本的数据流。通过数据流,实际上,我的意思是一个数据框如何引向另一个数据框(也许每个数据框的行号都是数字)。

DiagrammeR允许构建它,但是我是一个相当手动的任务。我认为解决方案包括两个部分,但我不确定是否应该问两个单独的问题。为了避免生气,请在这里询问第一部分。

典型的 diagrammeR 图如下:

第1部分:收集数据框名称

nodes <- create_node_df(n=10, 
                        nodes=c("TheOGDReportFinal", "PathDataFrameFinal", "MyOGD","MyPath","FinalDataset","FinalDatasetBarr","BarrettsBxQual2","LastTestsDone","FirstTestsDone","ff"),
                        label=c(stringr::str_wrap(paste0("TheOGDReportFinal: ",nrow(TheOGDReportFinal)),5),
                                stringr::str_wrap(paste0("PathDataFrameFinal: ",nrow(PathDataFrameFinal)),5), 
                                stringr::str_wrap(paste0("MyOGD: ",nrow(MyOGD)),5),
                                stringr::str_wrap(paste0("MyPath:",nrow(MyPath)),5),
                                stringr::str_wrap(paste0("FinalDataset:",nrow(FinalDataset)),5),
                                stringr::str_wrap(paste0("FinalDatasetBarr: ",nrow(FinalDatasetBarr)),5),
                                stringr::str_wrap(paste0("BarrettsBxQual2: ",nrow(BarrettsBxQual2)),5),
                                stringr::str_wrap(paste0("LastTestsDone: ",nrow(LastTestsDone)),5),
                                stringr::str_wrap(paste0("FirstTestsDone: ",nrow(FirstTestsDone)),5),
                                stringr::str_wrap(paste0("ff: ",nrow(ff)),5)),
                        shape = "rectangle",
                        fontsize=10)

第2部分:说明数据帧的连接方式

edges <-
  create_edge_df(
    from = c(1,2,3,4,5,6,6,6,6),
    to =   c(3,4,5,5,6,7,8,9,10))

第3部分:创建图表:

g <- create_graph(nodes_df=nodes, 
                  edges_df=edges)%>%
   add_global_graph_attrs(
      attr = c("layout", "rankdir", "splines"),
      value = c("dot", "TB", "false"),
      attr_type = c("graph", "graph", "graph"))
render_graph(g)

第一部分是将所有数据帧名称收集到一个向量中。我想这意味着查询全局环境以查看存在哪些数据框?但是,这样做可能会拾取脚本中不存在的数据帧。那么如何识别脚本中的所有数据框呢?

0 个答案:

没有答案