2010-03-04 4 views
9

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

Моя программа считывает документ и пытается нарисовать что-то MindMap на основе содержимого документа. Тем не менее, Networkx, кажется, имеет размер по умолчанию, когда дело доходит до фактического рисования узла. Это плохо для меня, потому что в каждый из моих узлов входит много текста. Мне нужен способ увеличить размер моих узлов (произвольно, в зависимости от размера текста, который принадлежит этому узлу).

Я пробовал посмотреть сайт Networkx, другие вопросы по SO и около 200 результатов поиска от Google, без везения.

ответ

10

Попробуйте nx.draw(G, node_size=size), где size может быть скаляром или массивом длины, равным числу узлов.

+2

Если это слишком простой вопрос, но я очень новичок в Networkx. Когда вы говорите, что размер может быть массивом длины, равным количеству узлов, каков каждый элемент массива? Является ли он скаляром, представляющим размер конкретного узла? Если да, то как Networkx знает, чтобы соотнести каждый индекс массива с соответствующим узлом. В конце концов, не все узлы будут иметь одинаковый размер на моем графике. – inspectorG4dget

+1

Хороший вопрос. В прошлый раз, когда я попытался, я создал простой список, похожий на размеры = [x * 2 для x в G]. Здесь имена узлов были целыми числами. Для более сложных примеров либо добавьте размер узла в список, когда узел добавлен в график, либо прокрутите узлы. – Nick

+0

Оказывается, что если вы создаете список (L) размеров отображения узла той же длины, что и G.nodes(), тогда размер G.nodes() [i] устанавливается равным L [i] – inspectorG4dget

Смежные вопросы