2016-07-06 7 views
1

私は構造化文字列を持っています。このデータをツリープロットでビジュアル化するきれいな方法はありますか?私は現在http://www.graphviz.org/https://pypi.python.org/pypi/pydotに読んでいますが、私は彼らのフォーマットに自分の文字列を得るために多くのリファクタリングをしなければならないようです。複数の文字列からのツリープロット、Python

String       Occurrence 
A:B:C:D       355 
A:B:C:D:F      330 
A:B:C:E:H      78 
A:B:C:D:G      37 
A:B:C:E:I      33 
...        ... 

EDIT:ツールでこのデータの書式設定を区切って読み込む方法はありますか? enter image description here

+0

質問は非常に明確ではありません。文字列をどのように視覚化するのが最善か、graphvizとpydotの使い方、または文字列を必要な形式に変換する方法を尋ねていますか?後者の場合、必要な形式は何ですか? –

+0

_it私は自分の文字列をformat_に入れるために多くのリファクタリングをしなければならないようです。* .DOTのような標準化されたフォーマットではなく独自のカスタムデータフォーマットを使用しているときは、独自のアダプタ/コンバータを書く必要があります。正確に何を期待しているのですか?宇宙には独自のカスタムデータ形式に100%適合するツールがあり、必要なだけ正確にデータを出力します。それで幸運。 [DOT](https://en.wikipedia.org/wiki/DOT_(graph_description_language))はグラフ記述の標準であり、graphvizはDOTファイルからそれらを引き出すための最高の無料ツールの1つです。 –

+0

それを使ってください。 * .DOT形式への変換は、私が探していたものです。ありがとう@ロガルスキ。簡単な方法:https://en.wikipedia.org/wiki/DOT_(graph_description_language) – user3155053

答えて

0

「:」を「 - >」に変換し、ドット形式で折り返すことで、プロットが容易になります。

digraph graphname { 
A -> B -> C -> D; 
A -> B -> C -> D -> F; 
A -> B -> C -> E -> H; 
A -> B -> C -> D -> G; 
A -> B -> C -> E -> I; 
} 

私はここでのコードの私の小さなスニペットをテストした:http://sandbox.kidstrythisathome.com/erdos/

1

ない「シンプル」なアプローチを、このスクリプトはなしインデックスに格納されている各「サイズ」の値で、ツリーにあなたのファイルを解析します:

tree.txt

A:B:C:D       355 
A:B:C:D:F      330 
A:B:C:E:H      78 
A:B:C:D:G      37 
A:B:C:E:I      33 

tree.py

import re 
f = open('tree.txt', 'r') 
tree = {} 
for line in f: 
    parts = re.split('\s+', line) 
    if parts[0] and parts[1]: 
     pointer = tree 
     node = parts[0].split(':') 
     for key in node: 
      if not key in pointer: 
       pointer[key] = {None: None} 
      pointer = pointer[key] 
     try: 
      pointer[None] = int(parts[1]) 
     except: 
      pass 
print(tree) 

treeは、次のようになります。

{ 
    'A': { 
     'B': { 
      'C': { 
       'D': { 
        'F': {None: 330}, 
        'G': {None: 37}, 
        None: 355 
       }, 
       'E': { 
        'H': {None: 78}, 
        'I': {None: 33}, 
        None: None 
       }, 
       None: None 
      }, 
      None: None 
     }, 
     None: None 
    } 
} 
関連する問題