2017-04-05 54 views
0

我想評估給定數量的特徵和相應屬性存在多少個變體,然後將這些組合作爲分支樹繪製,其中每個分支表示一個組合/變體。如何使用Python創建變體樹?

例如: 特徵:顏色,大小,模糊。每個功能都有不同的屬性(顏色:紅色,綠色,藍色;尺寸:大,小)。

通過排列,我找到了變體的數量。每個組合/變體都是我的變體樹的一個分支。例如。 ('red','big',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

昏暗只是一個例子,但也會出現其他顏色/尺寸組合。 – BjoernBorkenkaefer

回答

0

我能夠使用一般圖形描述格式DOT創建this。 Python文件main.py創建DOT文件:

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,所以我無法添加文本和藍色。