Как изменить цвет фона на графике Networkx? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь изменить цвет фона графа, сгенерированного сетью, используя matplotlib. Но, похоже, мой код меняет только внешний фон, а не фон самого графика. Пример кода:

import psutil
import networkx as nx
import matplotlib.pyplot as plt

mlist = psutil.net_connections(kind="all")
Node = nx.Graph()

Node.add_node("localhost")

for v, val in enumerate(mlist):
    if val[4] != () and val[4][0] != "127.0.0.1":
        print(str(val[4][0]) + " - " + str(val[6]))
        print(psutil.Process(val[6]).name())
        Node.add_node(str(val[4][0]))
        Node.add_edge(str(val[4][0]), "localhost")

fig = plt.figure()
nx.draw_networkx(Node, pos=nx.spring_layout(Node, 25), bg_color=[1,1,1,1], alpha=0.1, with_labels=False, node_size=100, node_color="green")
fig.set_facecolor("blue")

plt.show()

Ответы [ 2 ]

1 голос
/ 15 января 2020

Вы можете изменить цвет фона с помощью ax.set_facecolor. Если вы не создали ax, вы можете использовать plt.gca().set_facecolor. Если вы также хотите удалить черную рамку, используйте ax.axis('off'). Обратите внимание, что bg_color= игнорируется в nx.draw_networkx.

import networkx as nx
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
nx.draw_networkx(nx.dodecahedral_graph(),
                 with_labels=False, node_shape='*', node_size=300, node_color='gold',
                 edge_color='crimson', width=5)
ax.set_facecolor('deepskyblue')
ax.axis('off')
fig.set_facecolor('deepskyblue')
plt.show()

result

0 голосов
/ 15 января 2020

Это работает для меня:

fig, ax = plt.subplots(nrows=1, ncols=1)
nx.draw_networkx(Node, pos=nx.spring_layout(Node, 25), bg_color=[1,1,1,1], alpha=0.1, with_labels=False, node_size=100, node_color="green")
ax.set_facecolor("blue")

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...