簡體   English   中英

如何使用Python創建變體樹?

[英]How can I create a variant tree using 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)]

在此處輸入圖片說明

我能夠使用常規圖形描述格式DOT創建此文件 創建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

我使用的dot命令來自graphviz軟件包。 我沒有使用太多DOT,因此無法添加文本和藍色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM