2016-08-01 4 views
0

У меня есть dataframeGraphviz: vizualize данные из dataframe

ID domain search_term 
111 vk.com вконтакте 
111 twitter.com фэйсбук 
111 facebook.com твиттер 
222 avito.ru купить машину 
222 vk.com вконтакте 
333 twitter.com твиттер 
333 apple.com купить айфон 
333 rbk.ru новости 

мне нужно напечатать 3 графики. Я использую

domains = df['domain'].values.tolist() 
search_terms = df['search_term'].values.tolist() 
ids = df['ID'].values.tolist() 
for i, (id, domain, search_term) in enumerate(zip(ids, domains, search_terms)): 
    if ids[i] == ids[i - 1]: 
     f = Digraph('finite_state_machine', filename='fsm.gv', encoding='utf-8') 
     f.body.extend(['rankdir=LR', 'size="5,5"']) 
     f.attr('node', shape='circle') 
     f.edge(domains[i - 1], domains[i], label=search_terms[i]) 
    else: 
     continue 
f.view() 

Но он печатает только график, чтобы последний в строку, и я получаю only one file with graph Как я могу получить 3 график?

ответ

0

Вы создаете новый график на каждой итерации. Возьмите создание из петли и просто добавить края внутрь:

f = Digraph('finite_state_machine', filename='fsm.gv', encoding='utf-8') 
f.body.extend(['rankdir=LR', 'size="5,5"']) 
f.attr('node', shape='circle') 
for i, (id, domain, search_term) in enumerate(zip(ids, domains, search_terms)): 
    if ids[i] == ids[i - 1]: 
     f.edge(domains[i - 1], domains[i], label=search_terms[i]) 
f.view() 

Если вы хотите каждой итерации произвести новый график, используйте:

for i, (id, domain, search_term) in enumerate(zip(ids, domains, search_terms)): 
    if ids[i] == ids[i - 1]: 
     f = Digraph('finite_state_machine', filename='fsm.gv', encoding='utf-8') 
     f.body.extend(['rankdir=LR', 'size="5,5"']) 
     f.attr('node', shape='circle') 
     f.edge(domains[i - 1], domains[i], label=search_terms[i]) 
     f.render(filename=str(id)) 

BTW, я удалил else: continue, потому что это излишним.

+0

it return 'RuntimeError: не удалось выполнить ['dot', '-Tpdf', '-O', 'fsm.gv'], убедитесь, что исполняемые файлы Graphviz находятся на пути вашей системы – ldevyataykina

+0

, что кажется несвязанной проблемой , Это единственное изменение, которое вы сделали? –

+0

Я исправляю эту проблему. Могу ли я сохранить его в разных файлах? (имя файла ID) – ldevyataykina