Rで解析:ダイアグラムやネットワーク図作成の決定版。「DiagrammeR」パッケージ


はじめは、使用に戸惑うかもしれませんが一度理解してしまえば「合理的」に体系付けられているので手放せないパッケージの一つになるかと思います。エッジ(線)はデータを付与することで個々に太さを調整することが可能です。遺伝子発現、メタボロームやSNSなどの関係性を示すのに利用できるかと思います。

もちろん、本パッケージはノード(シンボル)ラベルに日本語も使用できます。

記事では、パッケージに収録されているコマンドを利用してデータを用意しプロットする「基本的な実行コマンド」の他に、データをdata.frameで用意しグラフをプロットする「応用的な実行コマンド」。そして、これらコマンドの出力結果とパッケージに収録されている使用頻度が高そうな「便利なコマンンド一覧」を紹介します。

ノードシンボル(shapeオプション)とエッジ矢印の種類(arrowhead,arrowtail,dirオプション)は「応用的な実行コマンド」に組み込んでいます。コマンド内を確認してください。

パッケージバージョンは0.8。実行コマンドはR version 3.2.2で確認しています。


パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("DiagrammeR")

基本的な実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("DiagrammeR")

#エッジデータを作成:create_edgesコマンド
#なお、コマンドの出力はデータフレームです
#エッジ始点終点のシンボル:arrowhead,arrowtailオプション;normal,dotなどが設定可能
#エッジ始点終点のシンボル表示:dirオプション;forward,back,both,noneが設定可能
edge <- create_edges(from = c("a", "b", "c", "e"),
                     to = c("d", "c", "a", "a"),
                     color = "green",
                     arrowsize = 1.0,
                     arrowhead = "dot",
                     arrowtail = "normal",
                     dir = "both",
                     rel = "leading_to")

#ノードデータを作成:create_edgesコマンド
#なお、コマンドの出力はデータフレームです
#シンボルの種類を設定:shapeオプション
node <- create_nodes(nodes = c("a", "b", "c", "d", "e"),
                     label = TRUE,
                     fontname = "Helvetica",
                     style = "filled",
                     color = c("#e1e6ea", "#4b61ba", "#a87963",
                               "green", "yellow", "#a87963"),
                     shape = c("circle", "circle", "rectangle",
                               "triangle", "rectangle", "circle"),
                     data = c(3.5, 2.6, 9.4, 2.7, 6.0))


#グラフオブジェクトの作成:create_graphコマンド
#表示レイアウトの設定:layoutオプション;dot,neato,twopi,circoが設定可能
GrapfPlot <- create_graph(nodes_df = node, edges_df = edge,
                          graph_attrs = "layout = twopi",
                          edge_attrs = "style = filled")

#グラフオブジェクト内容の表示:display_graph_objectコマンド
display_graph_object(GrapfPlot)

#グラフオブジェクトをプロット:render_graphコマンド
render_graph(GrapfPlot)

応用的な実行コマンド

data.frameからグラフをプロットします。Macでの文字化け防止にfontname = rep(“HiraKakuProN-W3”, length(n))をコメントアウトの状態で追記しています。

#パッケージの読み込み
library("DiagrammeR")

###データフレームを作成してグラフを描写####
#ノードデータの指定
n <- c("か", "ら", "だ", "に", "い", "い", "も", "の")

#データサイズの指定
#ノードデータを増やし、数字を大きくすることで複雑なダイアグラムになります
Datasize <- 20

#エッジデータの作成
#arrowhead,dirの"none"オプションは設定していません
edge <- data.frame(from = sample(n, Datasize-1, replace = TRUE),
                   to = sample(n, Datasize-1, replace = TRUE),
                   color = sample(c("red", "green", "blue"), Datasize-1, replace = TRUE),
                   arrowsize = rep(1, Datasize-1),
                   arrowhead = sample(c("normal", "box", "crow", "curve", "diamond",
                                 "dot", "inv", "tee", "vee"), Datasize-1, replace = TRUE),
                   dir = sample(c("forward", "back", "both"), Datasize-1, replace = TRUE))
  
#ノードデータの作成
#macでの文字化け防止にfontname = rep("HiraKakuProN-W3", length(n))を追記しています
node <- data.frame(nodes = n,
                   label = n,
                   #fontname = rep("HiraKakuProN-W3", length(n)),
                   style = rep("filled", length(n)),
                   color = sample(c("#e1e6ea", "#4b61ba", "#a87963"), length(n), replace = TRUE),
                   shape = sample(c("oval", "diamond", "egg", "plaintext",
                                    "point", "square", "triangle"), length(n), replace = TRUE),
                   data = sample(1:2, length(n), replace = TRUE))

#グラフオブジェクトの作成
GrapfPlot <- create_graph(nodes_df = node, edges_df = edge,
                          graph_attrs = "layout = twopi")

#グラフオブジェクトをプロット:render_graphコマンド
render_graph(GrapfPlot)

出力結果

・display_graph_objectコマンド
display_graph_object

・render_graphコマンド
render_graph

・応用的な実行コマンド
karadadiagramme


便利なコマンンド一覧

その他コマンドはパッケージのヘルプを確認してください。

コマンド内容関連
create_nodesノードデータの作成データ操作
create_edgesエッジデータの作成データ操作
scale_nodesノードデータに基づき各ノードの太さ等を計算データ操作
scale_edgesエッジデータに基づき各エッジの太さ等を計算データ操作
combine_nodesノードデータの結合データ操作
combine_edgesエッジデータの結合データ操作
create_graphグラフオブジェクト作成グラフオブジェクト作成
display_graph_objectグラフオブジェクト要約をプロットグラフオブジェクト出力
render_graphグラフをプロットグラフオブジェクト出力
node_infoノードデータの情報を表示グラフオブジェクト内容
edge_infoエッジデータの情報を表示グラフオブジェクト内容
node_present指定したノードがデータに存在するか確認グラフオブジェクト内容
edge_present指定したエッジがデータに存在するか確認グラフオブジェクト内容
get_nodesノード名を取得グラフオブジェクト内容
get_edgesエッジ名を取得グラフオブジェクト内容
get_predecessors結合元のノード名を取得グラフオブジェクト内容
get_successors結合先のノード名を取得グラフオブジェクト内容
node_countノード総数の取得グラフオブジェクト内容
edge_countエッジ総数の取得グラフオブジェクト内容
is_graph_emptyグラフオブジェクトが空か確認グラフオブジェクト内容
is_graph_directedグラフオブジェクトであるか確認グラフオブジェクト内容
add_nodeノードの追加ノード・エッジの操作
add_edgesエッジの追加ノード・エッジの操作
delete_nodeノードの削除ノード・エッジの操作
delete_edgeエッジの削除ノード・エッジの操作
node_typeノードの種類を指定ノード・エッジの操作
edge_relationshipエッジの関係性を指定ノード・エッジの操作


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク