Как изменить атрибуты чертежа графика networkx / matplotlib?

NetworkX включает в себя функции для построения графика с помощью библиотек matplotlib. Это пример использования большого ноутбука IPython (начинается с ipython3 notebook --pylab inline):

enter image description here

хорошо, для начала. Но как я могу повлиять на атрибуты рисунка, такие как окраска, ширина линии и маркировка? Я не работал с библиотек matplotlib раньше.

1 ответов


IPython-отличный инструмент для выяснения того, какие функции (и объекты) могут делать. Если ввести

[1]: import networkx as nx
[2]: nx.draw?

видишь

определение: nx.draw (G, pos=None, ax=None, hold=None, **kwds)

**kwds: optional keywords
   See networkx.draw_networkx() for a description of optional keywords.

и если вы поэтому набираете

[10]: nx.draw_networkx?

вы увидите

node_color: color string, or array of floats
edge_color: color string, or array of floats
width: float
   Line width of edges (default =1.0)
labels: dictionary
   Node labels in a dictionary keyed by node of text labels (default=None)

Итак, вооружившись этой информацией и немного экспериментируя, нетрудно прийти к:

import matplotlib.pyplot as plt
import numpy as np
import networkx as nx
import string

G = nx.generators.erdos_renyi_graph(18, 0.2)
nx.draw(G,
        node_color = np.linspace(0,1,len(G.nodes())),
        edge_color = np.linspace(0,1,len(G.edges())),
        width = 3.0,
        labels = {n:l for n,l in zip(G.nodes(),string.ascii_uppercase)}
        )
plt.show()

что урожайность

enter image description here