ネットワークグラフの作成

みなさんこんにちは、

Discourse インスタンス全体の相互作用をネットワークグラフとして可視化する際のヒントをご存知でしょうか?例えば、グループの相対的な規模や、それらがどのように関連しているか、「最もつながりのある」人々(いいねの数などによる)を特定し、これらをネットワークグラフで可視化したいと考えています。

おそらく、flourish のようなサードパーティのサービスが必要になると思いますが、グラフ作成の expertise をお持ちの方がいらっしゃいましたら、それも非常に参考になります!

よろしくお願いいたします。

もし私がこれを行うなら、

  1. サイトのバックアップを取得し、PostgreSQL データベースに読み込みます。PostgreSQL は Discourse のバックエンドデータベースです (参照)。

  2. PostgreSQL のデータから、特に Neo4j などの NoSQL データベースを作成します (参照)。

  3. Neo4j のクエリ言語である Cypher を使用して、関係性を特定します。

Neo4j には サンドボックス があり、パナマ文書 の例が参考になるかもしれません。


編集

Neo4j データベースが稼働し、Discourse の PostgreSQL データベースと同期を保つには、どちらか一方を使用します。

a. PostgreSQL の トリガー
b. Discourse の ウェブフック

先週、Flourishで一つ作成しました。これは、Googleがネットワーク融合チャートを discontinued したため、もはや機能しなくなったこの例に基づいています。

以下を表示しています:

  • ユーザー間の双方向の「いいね」
  • グループを強調するための色
  • 「いいね」の数を示す線の太さ
  • 各ユーザーの「いいね」比率(投稿数/「いいね」数)を示すバブルの大きさ

私の例はデータポイントが多すぎて読み取りにくいですが、とにかく実験として試してみました。ユーザー数を減らしたり、期間を短くしたりすると、もっと見やすくなります。

以下は、選択したユーザーのスクリーンショットです:

これをオンライン可視化として作成しました: Community Network Visualisation