Сохранение nltk рисованного дерева разбора в файл изображения

введите описание изображения здесь

Есть ли способ сохранить обратное изображение из файла tree.draw () в файл изображения программно? Я попытался просмотреть документацию, но ничего не нашел.

3 Solutions collect form web for “Сохранение nltk рисованного дерева разбора в файл изображения”

У меня была такая же потребность, и я nltk.draw.tree исходный код nltk.draw.tree Я нашел решение:

 from nltk import Tree from nltk.draw.util import CanvasFrame from nltk.draw import TreeWidget cf = CanvasFrame() t = Tree.fromstring('(S (NP this tree) (VP (V is) (AdjP pretty)))') tc = TreeWidget(cf.canvas(),t) cf.add_widget(tc,10,10) # (10,10) offsets cf.print_to_file('tree.ps') cf.destroy() 

Выходной файл является постскриптумом, и вы можете преобразовать его в файл изображения с помощью ImageMagick на терминале:

 $ convert tree.ps tree.png 

Я думаю, что это быстрое и грязное решение; он может быть неэффективным, поскольку он отображает холст и уничтожает его позже (возможно, есть возможность отключить отображение, которого я не смог найти). Пожалуйста, дайте мне знать, если есть лучший способ.

Использование объекта nltk.draw.tree.TreeView для автоматического создания рамки холста:

 >>> from nltk.tree import Tree >>> from nltk.draw.tree import TreeView >>> t = Tree.fromstring('(S (NP this tree) (VP (V is) (AdjP pretty)))') >>> TreeView(t)._cframe.print_to_file('output.ps') 

Затем:

 >>> import os >>> os.system('convert output.ps output.png') 

[Output.png]:

введите описание изображения здесь

Чтобы добавить ответ Minjoon, вы можете изменить шрифты и цвета дерева, чтобы больше походить на .draw() следующим образом:

 tc['node_font'] = 'arial 14 bold' tc['leaf_font'] = 'arial 14' tc['node_color'] = '#005990' tc['leaf_color'] = '#3F8F57' tc['line_color'] = '#175252' 

До (слева) и после (справа):

до после

    Interesting Posts
    Python - лучший язык программирования в мире.