web-dev-qa-db-ja.com

バージョン管理された階層データの視覚化

インタラクティブなアプリケーションでバージョン管理された階層データを視覚化する最良の方法は何でしょうか?

次の階層データがあり、大文字でエンティティを識別し、各エンティティに「color」タイプの値があるとします。

ルールは次のとおりです。

  1. 各ノードには1つの親があります。
  2. ノードは追加および削除できます。でも動かないで!
  3. ノードの値は変更できます。

たとえば、以下のバージョン2では、[〜#〜] d [〜#〜][〜 #〜] b [〜#〜]および[〜#〜] c [〜#〜]がその変更greenからorangeまでの値:

そして今、バージョン3では、[〜#〜] b [〜#〜]が削除されました(したがって、その子[〜#〜] d [〜#〜])および[〜#〜] e [〜#〜][〜#〜] f [〜#〜]および[〜#〜] g [〜 #〜]がCに追加されました:

ユーザーはすべてのバージョンを「そのまま」(簡単な方法)だけでなく、変更ログの全体像(正確には何を詳しく説明していないか)も表示できる必要があります。

前のバージョン」と「次のバージョン」へのリンクを追加すると、ユーザーはまだタスクを持っているため、何とかポイントを逃します彼女がバージョンのスナップショットを閲覧しているときに、彼の心の中でこの大きな絵を構築しています。

変更ログを表示する良い方法は何ですか?

p.s .:「階層バージョン対応データのグーグル」で、「 ツリーリングメタファー 」について見つけましたが、ルール1(単一の親)および3(ノード値の変更)をサポートできません。

編集します。回答で共有される知識が他の人にとってより役立つように、質問をできるだけ一般的なものにしようとしました。しかし、これが私の特定のシナリオです:

私の場合、階層は3レベルより深くなることはなく、すべてのノードには数十(数百ではない)の兄弟が存在すると予想されます。

ノードが保持するvalue(例では「red」、「green」、「orange」..)は、テキスト行(約30文字)です。つまり、離散データです。

ノードは会社、その部門、およびサブ部門であると考えることができます。各ノードの値は、会社/部門の名前です。

私のユーザーは、会社および(サブ)部門の作成、消滅、名前の変更の履歴を確認したいと考えています。 (会社の合併や部門の入れ替えは忘れられます...)

5
bruno

ユーザーのニーズは何ですか?

これ以上の情報なしに質問に答えることはほぼ不可能です。

主に、ユーザーが最初にそのような機能を必要とするのはなぜですか? 1000のバージョンがあり、500のオブジェクト(そのうちの490は削除されている可能性がある)が含まれている場合、そのように表示されます。ビジュアライゼーションを解釈することは不可能であり、ユーザーは本当に490個の削除されたオブジェクトを見たいと思うでしょうか?

ユーザーとして、このような視覚化がどのようなタスクに役立ちますか?

さらに、最大の階層の深さ、最大の色などの側面がここで大きな役割を果たす可能性があります。

数学的にはできません

次のグラフについて考えてみます。

A graph showing simple speed over time graph

これは、2つの軸(速度、時間)を含む2Dグラフで、どちらにも連続値が含まれます。

次のグラフについて考えてみましょう。

A speaker directivity chart, 2D display with colour providing the 3rd dimension

2Dサーフェスにプロットされているにもかかわらず、色は3次元の値を示すために使用されます。ここでも、3つの変数はすべて連続です。

3Dグラフの別のバージョン:

A 3D waterfall graph showing how frequencies decay over time

3Dで色があるにもかかわらず、色は時間軸に対して冗長です。つまり、本質的に、すべての変数がcontinuousである3Dグラフです。

また、この種のプロットは、何かが時間の経過とともに減衰した場合にのみ機能することに注意してください。減衰後にマグニチュードが増加した場合、新しい情報によって背後にあるものが隠されます。

階層

解釈を簡単にするために、階層の視覚化には2次元が必要であり、数学的に変数はdiscreteの性質を持ちます。ここで時間軸を導入すると、3次元になりますが、階層の個別の性質、接続を描画する必要があるという事実、およびデータの(想定される)非減衰性の性質は、前のデータが後ろのデータを隠すことを意味しますそしてすべてが読めなくなります。

可能な解決策?

繰り返しになりますが、実際のユーザーのニーズを知らなくても、これは推測にすぎませんが、AppleのTime Machineのものと同様の視覚化は許容できる場合があります。

A screenshot showing Apple's Time Machine state stacks

ウィンドウを自分の階層に置き換え、アニメーションを使用して、ユーザーがバージョンを切り替えたときに削除されたものを表示することもできます。

別のオプションは、データの性質に応じて、階層を1Dで表示することです(これにより、解釈が明らかに困難になります)。このようなものは、検討する価値があります。

Nodes are presented on a single line, with arrows linking between them. Sets show change over time.

3
Izhaki

Gitやその他のコードのバージョン管理システムは、順調なスタートを切るかもしれません。たぶん、メイン/現在のブランチを強調表示し、各バージョンについての情報を表示します。

コードバージョンシステムのスクリーンショット

大規模なナビゲーションシステムが役立つ場合があります。大都市の地下計画とジャパンレールパスの地図を試してみてください。新幹線の駅の数はひどいです。

1
digsrafik