KHcoder22. 共起ネットワーク(第3回) タブローでネットワーク図

KHcoder22. 共起ネットワーク(第3回) タブローでネットワーク図

KHcoderでは共起ネットワーク図をCSVで出力する機能がありません。ならば、Rからデータを出力してタブローで表現してみようということです。

テキストマイニングツール「KHcoder」の活用メモ
開発者である樋口先生に感謝!
【今回の分析対象テキストはこちらからコピーできます】

Rからデータを取り出す

KHcoderの手順
KHcoder 共起ネットワーク図

 今回はKHcoderで描画できる共起ネットワーク図をタブローで再現しようとする、大胆で生産性が低いことにチャレンジします。

 KHcoderで共起ネットワーク図を描画します。
・「集計単位」を「段落」
・「最大出現数」を1
・「外部変数・見出し」を「年代」に設定します。
・右下の「保存」をクリック
・「R Source」を選択して名前を付けて保存します。

 Rを起動して保存したファイルをドラッグ&ドロップします。手順は共起ネットワーク(第2回)と同様です。

Rからデータをとりだすコマンド
data1<- cbind(d[,0],freq)
#data1をCSVで取り出します
write.csv(data1, "ディレクトリ名/マスタ.csv")
#ノードの座標(lay_f)へ列名を付与します
colnames(lay_f) <- c("X座標", "Y座標")
#lay_fをCSVで取り出します
write.csv(lay_f, "ディレクトリ名/xy座標.csv")
#線分の起点・終点、線の太さ(el)をCSVで取り出します
write.csv(el, "ディレクトリ名/線と太さ.csv")

(”<-”などが文字化けしていたら直してくださいませ、ディレクトリ名、ファイル名はご自身で書き直してください。)

Rへコマンドを入力して必要なデータをアウトプットします。これで指定したディレクトリへCSV形式で3つのファイルが作成されます。

・マスタ.csv(語と外部変数名、出現回数)
・xy座標.csv(語と外部変数をプロットする座標)
・線と太さ.csv(線分の起点・終点、線の太さ)

CSVファイルを整形
マスタ.csv

 「マスタ.csv」ファイルを開きます。
・行の下の方にある「外部変数・見出し」の頭についている”<>”を削除します。

・C列へ「語番号」と列名を入れて1から昇順ユニークになる番号を最終行まで追加します。(画像は6~32行を非表示にしていますが実際にはすべての行にたいして処理を実施してください)

・上書き保存して終了です。

タブローでデータへ接続する

語をプロットするデータ
Tableau データ接続1

 保存した「マスタ.csv」データへつなぎます。

・元データA列の列名がぬけているのでF1になっています。ダブルクリックして列名を「語」に書き換えます。
・「語」は座標へプロットする「語」(ノード)です。
・「freq」は「語」の出現回数ですからプロットのサイズになります。
・「語番号」は直線をプロットするデータとブレンドするためのコードになります。

Tableau データ内部結合

・「追加」をクリックして「xy座標.csv」へ接続します。
・「マスタ.csv」と「xy座標.csv」を内部結合します。

・F1列は不要なので「非表示」にします。

 これでマスタ.csvにある「語」にたいして、それぞれをプロットする座標をがドッキングしました。

この結合データは「語」をブロットする座標とプロットのサイズを示すものです。

線をプロットするデータ
Tableau データ接続2

・新しいデータソースで「線と太さ.csv」へ接続します。

接続した状態(左画像)は
・「F1」が「番号」になります。
・「edge1」と「edge2」が「番号」です。
 これは、「マスタ.csv」の「番号」と一致しています。

 1行目で解説すると
・「番号」1と「番号」33を直線で結ぶというデータです。
・「weiht」と「elbb.weigt_b」は線の太さです。

 描画では「elbb.weigt_b」を使用するので「weiht」列は非表示にしても構いません。

・「F1」を「線番号」
・「edge1」を数字の「1」
・「edge2」を数字の「2」へ書き換えます。

Tableau データ接続 ピポット

・「1」と「2」の列を同時選択して右クリック
・「ピポット」を選択します。

 右図のようにあたらしく「ピポットのフィールド名」「ピポットのフィールド値」の2列が追加されます。 

・「ピポットのフィールド名」を「線の順番」
・「ピポットのフィールド値」を「番号」へ書き換えます。
 これで完成です。

・「番号」は線をプロットするためのIDです。
・「線の順番」は始点1から終点2へ直線をプロットするというデータです。

 タブローでは線の順番を昇順数値で設定すると、始点1→中継点2→中継点3→終点4、このように直線で結んでいくことが可能です。

タブローで描画

トレーニング用データ

こちらからコピーまたはダウンロードできます。
フィールド名の変更、ピボット処理は必要ありません。
文字化けするときは、タブローの「テキストファイルプロパティ」→「Japanese Shift JIS」を選択してください。

「マスタ」と「xy座標」は「語」でリレーション、「マスタ」と「線と太さ」は「語番号」でリレーションします。

マスタ

xy座標

線と太さ

線をプロットする
Tableau 線のプロット

・はじめのデータは「線と太さ」です。
・「線番号」「語番号」がメジャーになっているときはディメンションへ変更してください。

・ディメンションの「「線番号」を「詳細」へドロップします。
・マークを「線」に設定します。

・データを「マスタ」へ切り替えて
・列シェルフへ「X座標」
・行シェルフへ「Y座標」をドロップします。

 このとき「マスタ」データのディメンションの「番号」でデータブレンドします。「番号」の横にリンクマークがオレンジ色で表示されればOKです。
 プライマリデータソースが「線と太さ」、セカンダリデータソースが「マスタ」でリレーションシップが構築された状態です。

・「線の太さ」データへ戻り
・「線の順番」をパスへドロップします。
 これで線のプロットが完成です。

・「elbb.weight_b」を色、サイズ、ラベルへドロップします。

語をプロットする
Tableau 語のプロット

・データを「マスタ」へ切り替えて
・列シェルフへ「X座標」を追加します。
・マークを「形状」に切り替えて「形状」へ「語」をドロップします。
・10代・40代・60代を四角
・その他の語を丸にします。
 このあたりはお好みです。

・「freq」を色とサイズへドロップします。
・「語」をラベルへドロップします。

 これで「語」のプロットは完成です。

二重軸にする
Tableau 二重軸

・列シェルフの右側にある「X座標」を右クリックして「二重軸」を選択します。

 線のプロットと語のプロットが重なります。線と語を同時にプロットするもではなく、別々にプロットしたものを重ねるわけです。

 ただしこの状態では線のプロットと語のプロットが少しずれています。原因は上のX座標と下のX座標のスケールが一致していないからです。

軸を同期する
Tableau 軸の同期

・上下どちらかのX座標を右クリックして軸の編集を開きます。
・「二軸を同期」にチェック
・「ゼロを含める」のチェックは外します。

手直しして完成
Tableau ネットワーク図

・「マスタ」データのメジャーにある「freq」をフィルターへドロップして表示します。

 これで「語」の出現回数の範囲を動かすことができます。あとは、色やサイズをお好みで調節すれば完成です。

Tableau 共起図 ダッシュボード

・ダッシュボードへはると大きく見えます。
・「freq」の最小値を2にするとこのようになります。

 軸の編集で「ゼロを含める」のチェックを外したのは「freq」数を変更してもキャンバス全体にプロットするためです。

タブローパブリックでビューを見る

>KHcoder21. 共起ネットワーク(第2回) Rの計算
>KHcoder 23. 共起ネットワーク(共起パターンの変化を探る)