Я восстановил ваш случай на основе сгенерированных данных примера.
Сначала у нас есть этот график.
РазмерЛевый массив намного меньше размера правого массива, поэтому левый массив рисуется непропорционально.Чтобы нарисовать его правильно, вы должны изменить свою функцию обновления положения:
pos.update({node: [1, index] for index, node in enumerate(USsNames)})
Мы знаем, что TCsNames
больше USsNames
, поэтому мы можем умножить каждый USsNames
узел Y-позиция к их соотношению:
pos.update({node: [1, index*(len(TCsNames)/len(USsNames))] for index, node in enumerate(USsNames)})
Теперь у нас есть этот график:
Обрезатьметки узлов, вы должны изменить draw_networkx_labels
с параметром labels
:
nx.draw_networkx_labels(G, pos, labels=node_labels, font_size=8)
с node_labels
, равным:
node_labels = {i: i[:5] for i in G.nodes}
(5желаемая длина метки узла).
И, наконец, у нас есть график, который вам нужен: