2017-04-05 2 views
0

与えられた数のフィーチャとそれに対応する属性のバリアント数を評価し、その組み合わせをブランチのツリーとしてプロットしたいと思います。各ブランチは1つの組み合わせ/バリアントを表します。Pythonを使用してバリアントツリーを作成するにはどうすればよいですか?

例: 機能:色、サイズ、薄暗い。各機能の属性はです(色は赤、緑、青、サイズは大きく、小さく)。

順列によって、変異の数がわかります。各組み合わせ/バリアントは、私のバリアントツリーのブランチです。例えば。 ( 'red'、 'big'、1)は1つの枝であり、( 'red'、 'big'、2)は別のものです。

ノードとアークでこれらのブランチを引き出すのに役立つライブラリがありますか?置換のための

コード:

colors = ['red', 'green', 'blue'] 
size = ['big','small'] 
dim = [1,2,3] 

from itertools import product 

x =list (product(colors,size,dim)) 

print (x) 
print ("Number of variants:",len(x)) 

[('red', 'big', 1), ('red', 'big', 2), ('red', 'big', 3), 
('red', 'small', 1), ('red', 'small', 2), ('red', 'small', 3), 
('green', 'big', 1), ('green', 'big', 2), ('green', 'big', 3), 
('green', 'small', 1), ('green', 'small', 2), ('green', 'small', 3), 
('blue', 'big', 1), ('blue', 'big', 2), ('blue', 'big', 3), 
('blue', 'small', 1), ('blue', 'small', 2), ('blue', 'small', 3)] 

enter image description here

+0

あなたのサンプルイメージでは、赤/枝のブランチに対してのみdimが表示される理由は何ですか? – ikkuh

+0

plotly ...... https://plot.ly/python/tree-plots/ –

+0

dimは一例でしか描かれていませんが、他の色/サイズの組み合わせでも表示されます。 – BjoernBorkenkaefer

答えて

0

Iは、一般的なグラフの記述形式DOTを用いthisを作成することができました。 DOTファイルの作成Pythonのファイルmain.py

from itertools import product 

colors = ['red', 'green', 'blue'] 
size = ['big','small'] 
dim = [1,2,3] 

print('digraph G {\n rankdir=LR\n node [shape=box]\n') 
print(' start [label=""]') 

for i, c in enumerate(colors): 
    print(f' color_{i} [label="{c}"]; start -> color_{i}') 

    for j, s in enumerate(size): 
     print(f' size_{i}_{j} [label="{s}"]; color_{i} -> size_{i}_{j}') 

     for k, d in enumerate(dim): 
      print(f' dim_{i}_{j}_{k} [label="{d}"]; size_{i}_{j} -> dim_{i}_{j}_{k}') 
print('}') 

を私は次のコマンドを使用してイメージを作成しました:

$ python main.py > graph.dot 
$ dot -Tpng graph.dot -o graph.png 

私が使用したドットコマンドはgraphvizパッケージからです。 DOTをあまり使わなかったので、テキストと青の色を追加できませんでした。

関連する問題