networkx рисует независимые фигуры друг на друге - PullRequest
0 голосов
/ 30 мая 2018

Я хочу нарисовать несколько разных топологических фигур в исследовании.Тем не менее, я вижу, что после того, как я рисую первую фигуру, я вижу, что она унаследована на второй фигуре.Я использую anaconda2 и его пакет networkx.Вот пример кода для разных случаев.

#!/path/to/anaconda2/bin/python
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
import sys

val=int(sys.argv[1])

def drawV1(numOfNodes,FilePtr):
    np.random.seed(0)
    G = nx.Graph()
    for ii in range(1,numOfNodes+1):
        G.add_node(str(ii))
    nx.draw(G, with_labels = True)
    plt.savefig(FilePtr) # save as png

def drawV2(numOfNodes,FilePtr):
    np.random.seed(0)
    G2 = nx.Graph()
    for ii in range(1,numOfNodes+1):
        G2.add_node(str(ii))
    nx.draw(G2, with_labels = True)
    plt.savefig(FilePtr) # save as png


if val==1: # Problematic case
    drawV1(5,'V1_1_1.png')
    drawV1(10,'V1_1_2.png')
if val==2: # it is good when I draw only one figure
    drawV1(10,'V1_2_1.png')
if val==3: # problem again
    drawV1(10,'V1_3_1.png')
    drawV2(10,'V2_3_2.png')

Я запускаю его как

./mycode.py [1,2,3]

Например, для случая 1 я получаю следующие графики:

5 узлов

10 узлов (вы также увидите предыдущие 5 узлов).

1 Ответ

0 голосов
/ 30 мая 2018

Позвоните nx.draw с hold=False или добавьте plt.clf() после plt.savefig(...).Это очищает фигуру, и вы можете нарисовать новый.

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