コースは主にIT専門家を対象に教えられているという事実を考慮して、講師は最小限の数学と多くの練習で十分な理論を提供することに依存していました。 上記のタスクのほとんどには、 NetLogoが適しています。 独自の高度なプログラミング言語が含まれており、さまざまなランダムプロセスを簡単にシミュレートできます。 さまざまなデータを視覚化するために、 Gephiプログラムが選択されました。
後者の使用経験に基づいて、ソフトウェアの入力データの受信とその後の視覚化を検討した記事が作成されました。
実際、問題の説明は次のとおりです。Gephiツールを使用した実際のデータの視覚化。
データ生成
少し考えてから、 IACR Webサイトから著者の相互作用を提示することにしました。 情報保護の分野で働く人は、おそらく彼について知っているでしょう、他の皆のために-これは情報セキュリティに関する記事が公開されているサイトです。
Gephiファイル形式
Gephiは、かなり多数のファイル形式を理解しています。
写真からわかるように、最良のオプションはgexfを使用することです 。 判明したように、これはオープン形式であり、ライブラリはここから簡単にダウンロードできます 。 このサイトでは、Libgexfは現在Linux(Ubuntu 8.10および9.04でテスト済み)でのみ実行されていると述べています。 ためらうことなく、ソースをダウンロードして、Python用のインターフェイスを使用してUbuntu 11.10でコンパイルすることにしました(残りの部分を実装することにしたので)。 テストファイルを生成し、Gephiで起動することにしましたが、それを使用して、自分のファイルもインターネットからダウンロードしたものも、自分で保存したファイルも開かれませんでした。 どのようなバグかはわかりませんが、少し選んで2台のマシンで試してみると、このベンチャーを放棄して代替手段を探すことにしました。 CSVで遊んで、その機能が十分ではないことに気付いた後、データベースからのインポートに遭遇しました。
「ファイル->データベースのインポート->エッジリスト...」にあります。 最初は、「エッジリスト」はエッジのインポートにすぎないと考えていましたが、頂点もインポートされていることがわかりました。 SQLite、MySQL、PostgreSQL、およびTeradataをデータベースとして使用できます。 インポートウィンドウの上部には、テーブルパラメータのヒントがあります。 ノードとエッジの2つのテーブルが必要です。 ノードテーブルには列が含まれている必要があります。
- 必須:
- id-頂点番号
- オプションで:
- label-頂点のラベルまたは指定
- x-グラフの頂点が配置される平面上のx座標
- y-グラフの頂点が配置される平面上のy座標
- サイズ-頂点サイズ
エッジテーブルの列は次のとおりです。
- 義務的:
- source-開始頂点のID
- target-終了頂点のID
- オプション:
- ラベル-エッジのマークまたは指定
- 重量-リブ重量
動的グラフの「開始」列と「終了」列はオプションで使用できます。 いくつかのテストチェックの後、SQLite3を使用することが決定されました。
Pythonデータベーススクリプト
スクリプト(プログラム)は次のことを行う必要があります。
- 記事の著者データをアップロードする
- 著者に関する情報を別々の名前に分けます
- 前の段落に従ってデータベースに入力します
ソースコードは非常にたくさんあるので、記事には組み込みませんでした。 こちらからダウンロードできます。
私はいくつかのコメントのみを提供します。 データベースとして、sqlite3が使用され、そのインターフェイスは Pythonにあります。 テーブルと列は、「ファイル形式」セクションの説明に従って作成されます。 「http://eprint.iacr.org/cgi-bin/cite.pl?Entry = year / number」がソースリンクとして使用されました。ここで、yearは発行年、numberは記事の番号です。 最初は、001から最後の1つまで繰り返す必要があると想定されていましたが、これは「author」という単語がないことで決まります。 しかし、その後、すべての記事番号が存在するわけではないことが判明しました(たとえば、2004年には001はありません)。 そのため、自転車を積み上げて、3人の著者が見つからないことを確認する必要がありました。 名前を受け取ったときにもう1つキャッチが待っていました。 著者の行は次の形式にすることができます。
「{美しいエレナ、トゥガリンズメイ、アリョーシャポポビッチ}」
「{美しいエレナ、トゥガリン・スネーク、アリョーシャ・ポポビッチ}」
「{美しいエレナ、トゥガリンヘビ、アル{ee}シャポポビッチ}」
「{Alyosha Popovich}」
「{美しいエレナとトゥガリンの蛇}」
行から名前を取得する方法を誰がすぐに教えてくれますか、私は感謝します。 出力は['Elena Prekrasnaya'、 'Tugarin Zmey'、 'Alyosha Popovich'](スペースまたはコンマなし、つまりスペースで区切られた姓名のみ)である必要があります。
そして最後に、インターネットを苦しめないために、最初にローカル作成者ダンプを作成し、それを入力として使用することにしました。 このため、私はpickleを使用しました。これにより、変数をファイルにダンプし、必要に応じて抽出することができます。 このために、辞書を作成しました。 キーは年であり、値は著者の文字列の配列でした。 したがって、 ローカルファイルのみを使用して、興味のある年に従ってデータベースを作成できます 。
Gephiでデータを視覚化する
例として、1996年から2003年の小さなグラフを見てみましょう。これは、759個の頂点と437個のエッジで構成されています。 この情報は、グラフをインポートするときに表示できます。
または「コンテキスト」ウィンドウで。
さらに、インポートするとき、グラフの向きを選択できます:指向、非指向、または混合。
次に、グラフの初期編集用の「ランキング」ウィンドウを選択します。 次数に応じて、すべての頂点を青の色合いで色付けし、頂点自体のサイズを設定します。 頂点の最大次数に等しいか、2倍大きい最大頂点サイズを設定することをお勧めします。
最終的に、これは判明しました:
ここで、すべてを美しく表示するために、「レイアウト」ウィンドウを選択します。 このウィンドウには、グラフを整理するために使用できるアルゴリズムが表示されます。
以下はその一部のスクリーンショットです。
ARF
放射軸
パラレルフォースアトラス
頂点を軸の1つにアタッチすることもできますが、これは[ランキング]-> [座標]ウィンドウで選択されます
グラフでは、「ラベル」フィールドの出力を選択できます。 例:
結論
Gephiは、若いが、さまざまなデータを視覚化するための非常に強力なツールであり、初心者と経験豊富なユーザーの両方に適しています。 データベースを使用すると、視覚化に必要な入力データをすばやく簡単に取得できます。