networkx: изменить цвет узла в draw_circular - PullRequest
1 голос
/ 10 ноября 2011

Я рисую график с помощью networkx и draw_circular

  networkx.draw_circular(g)

Я пытаюсь изменить цвет некоторых узлов, возможно, с помощью draw_networkx_nodes .
, но для этого мне нужно знатьположение узла, как я могу получить положение узлов в draw_circular?
или напрямую, как я могу изменить цвет некоторых узлов в draw_circular?

Ответы [ 2 ]

7 голосов
/ 10 ноября 2011

draw_circular будет принимать ключевые аргументы, такие же как draw_networkx. Существует необязательный аргумент node_color, где вы можете указать цвета для отдельных узлов. Аргумент, передаваемый в node_color, должен быть списком с длиной, равной числу узлов, или одним значением, которое будет использоваться для всех узлов. Цвет может быть любым, что распознается matplotlib .

Так что-то вроде этого даст следующий результат:

import networkx as nx
import matplotlib.pyplot as plt
from random import random
g = nx.random_graphs.erdos_renyi_graph(10,0.5)
colors = [(random(), random(), random()) for _i in range(10)]
nx.draw_circular(g, node_color=colors)
plt.show()

enter image description here

Редактировать

Опционально, вы можете получить позиции узлов для определенного макета с помощью networkx.layout.circular_layout и т. Д.

2 голосов
/ 23 августа 2012

Просто, чтобы добавить к предыдущему ответу (Avaris), также может быть полезным использование атрибута * nodelist"networkx.draw_networkx_nodes ()".

import matplotlib.pyplot as plt
import networkx as nx

nodes = [0,1,2,3]
edges = [(0,1), (1,2), (3,1), (2,3)]
nodeListA = [0,1]
nodeListB = [2,3]    

G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)
position = nx.circular_layout(G)

nx.draw_networkx_nodes(G,position, nodelist=nodeListA, node_color="b")
nx.draw_networkx_nodes(G,position, nodelist=nodeListB, node_color="r")

nx.draw_networkx_edges(G,position)
nx.draw_networkx_labels(G,position)

plt.show()

Это генерируетНа следующем рисунке:

enter image description here

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

In [119]: position
Out[119]: 
{0: array([ 1. ,  0.5], dtype=float32),
 1: array([ 0.49999997,  1.        ], dtype=float32),
 2: array([ 0.        ,  0.49999997], dtype=float32),
 3: array([ 0.5,  0. ], dtype=float32)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...