К сожалению, nx.draw_networkx_nodes
не принимает итерацию фигур, поэтому вам придется l oop по узлам и строить их индивидуально. Кроме того, нам придется проиндексировать сгенерированный cmap
, иначе однозначные значения сообщества будут сопоставлены с тем же начальным цветом cmap. Для возможных форм я просто копирую строку доступных форм, упомянутых в docs , и индексирую ее на основе номера раздела:
# load the karate club graph
G = nx.karate_club_graph()
# compute the best partition
partition = community_louvain.best_partition(G)
cmap = cm.get_cmap('viridis', max(partition.values()) + 1)
shapes = 'so^>v<dph8'
plt.figure(figsize=(12,8))
# draw the graph
pos = nx.spring_layout(G)
# color the nodes according to their partition
cmap = cm.get_cmap('viridis', max(partition.values()) + 1)
nx.draw_networkx_edges(G, pos, alpha=0.5)
for node, color in partition.items():
nx.draw_networkx_nodes(G, pos, [node], node_size=100,
node_color=[cmap.colors[color]],
node_shape=shapes[color])
введите описание изображения здесь