Help us understand the problem. What is going on with this article?

DiagrammeR入門 NDFとEDF

More than 1 year has passed since last update.

2017/03/06 追記: 現在NDFとEDFの仕様が変更され,このコードでは動きません。また公式サイトのドキュメントでは更新されていないため,再度調査と検証が必要となっています。出来る限り早く対応したいとは思いますが,もうしばらくお待ちください…

DiagrammeR Node and Edge Data Frames

本家のドキュメント該当箇所を参考にテストします。なお出力は画面キャプチャしたものです。同一の内容をRPubsにも公開しています。こちらのほうが出力がそのままなので感覚がつかみやすいかと思います。

DiagrammeR

ダイアグラムを作成するパッケージです。詳細は本家ドキュメントを見てください。非常に充実していますが日本語でのドキュメントはほとんどないです。

DataFrameからNodeとEdgeを作成

データフレームからダイアグラムを作成するにはNode用のデータフレームとEdge用のデータフレームを作成する必要があります。

Node Data Frame(NDF)の作成

詳しくは"Creating an NDF"を参考にしてください。できるだけ最小なものを作ります。

library(DiagrammeR)
nodes_1 <- 
  create_nodes(nodes = c(letters[1:3]))
nodes_1
##   nodes type label
## 1     a          a
## 2     b          b
## 3     c          c

create_nodes(nodes=c())でノードを作成します。nodesがNodeのidで、labelを指定しなければそのままこのidがラベル(ノード内に表示される文字)となります。1レコード(行)の内容が1つのノードの情報となります。

Edge Data Frame(EDF)の作成

詳しくは"Creating an EDF"を参考にしてください。できるだけ最小なものを作ります。

edges_1 <-
  create_edges(from = c("a","b"),
               to = c("c","c"))
edges_1
##   from to rel
## 1    a  c    
## 2    b  c

create_edges(from=(),to=())でエッジを作成します。fromはエッジがスタートするノードで、toはエッジが到達するノードを指定します。1レコード(行)の内容が1つのエッジの情報となります。

NDFとEDFからダイアグラム作成

以上2つから、ダイアグラムを作成します。詳細は本家のドキュメント該当箇所を参照してください。

graph <- create_graph(
  nodes_df = nodes_1,
  edges_df = edges_1
)
str(graph)
## List of 10
##  $ graph_name : NULL
##  $ graph_time : NULL
##  $ graph_tz   : NULL
##  $ nodes_df   :'data.frame': 3 obs. of  3 variables:
##   ..$ nodes: chr [1:3] "a" "b" "c"
##   ..$ type : chr [1:3] "" "" ""
##   ..$ label: chr [1:3] "a" "b" "c"
##  $ edges_df   :'data.frame': 2 obs. of  3 variables:
##   ..$ from: chr [1:2] "a" "b"
##   ..$ to  : chr [1:2] "c" "c"
##   ..$ rel : chr [1:2] "" ""
##  $ graph_attrs: NULL
##  $ node_attrs : NULL
##  $ edge_attrs : NULL
##  $ directed   : logi TRUE
##  $ dot_code   : chr "digraph {\n\n  'a' [label = 'a'] \n  'b' [label = 'b'] \n  'c' [label = 'c'] \n  'a'->'c' \n  'b'->'c' \n}"
##  - attr(*, "class")= chr "dgr_graph"

create_graph()graphクラスのオブジェクトを作成します。先ほど作成したNDFとEDFを上記コードのように指定すればOKです。なおstr(graphを見てもらえれば、だいたいどんな情報を持っているかがわかるかと思います。

なお、このままでは肝心のダイアグラムが表示されませんのでレンダリングします。

render_graph(graph)

NDF_EDF1.png

render_graph()でレンダリングします。RStudioならViewerで表示されますし、このようにRmdなら出力として表示されます。なお、デフォルトで出力されるのはgrVisの標準スタイルです。mermaidの方を指定する方法は…そのうち検討します。

引数のoutput=でいくつか指定するとタイプが違ったものがでます。詳しくは?render_graphを参照してください。

render_graph(graph, output = "vivagraph")

NDF_EDF2.png

render_graph(graph, output = "visNetwork")

NDF_EDF3.png

ここまでの知識があれば、最低限ダイアグラムを作成することが可能です。もちろん、このパッケージはもっといろんなことがたくさん出来るようになっています。それらについてはまたいつか。

Enjoy!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away