2016-08-11 5 views
0

NetworkXを使用してループの繰り返しごとに新しいグラフpngを保存する方法がわかりません。私はこの質問からコードを借りました:in NetworkX cannot save a graph as jpg or png fileとそれを少し操作しました。以下はコードですループの繰り返しごとに新しいグラフをpngとして保存するには

import networkx as nx 
import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(12,12)) 
ax = plt.subplot(111) 
ax.set_title('Graph - Shapes', fontsize=10) 

G = nx.DiGraph() 
G.add_node('shape1', level=1) 
G.add_node('shape2', level=2) 
G.add_node('shape3', level=2) 
G.add_node('shape4', level=3) 
G.add_edge('shape1', 'shape2') 
G.add_edge('shape1', 'shape3') 
G.add_edge('shape3', 'shape4') 
pos = nx.spring_layout(G) 
n = 0 
colorses = ['yellow', 'red', 'blue', 'green'] 
while n < len(colorses): 
    nx.draw(G, pos, node_size=1500, node_color=colorses[n], font_size=8, font_weight='bold') 
    plt.tight_layout() 
    # plt.show() 
    plt.savefig("Graph.png", format="PNG") 
    n += 1 

理想的には、それぞれ異なる色のノードを持つ4つの画像が必要です。これ以上の情報が必要な場合はお知らせください。ありがとう!

+1

予めご微調整することができます'' Graph.png ''' '' '' '' '' '' '' '' '' '' '' Graph''のように '' Graph.png " –

答えて

2

をちょうどあなたがしかし、より説明的な名前を使用する必要があり、出力ファイル

while n < len(colorses): 
    nx.draw(G, pos, node_size=1500, node_color=colorses[n], font_size=8, font_weight='bold') 
    plt.tight_layout() 
    # plt.show() 
    plt.savefig("Graph" + str(n) +".png", format="PNG") 
    n += 1 

の名前を変更します。これを行う1つの方法は、format()enumerate()機能を使用することです。たぶん、Nの代わりに、あなたは文字列が空白を持つことになりますから、素晴らしいではありません時間

plt.savefig("Graph" + str(datetime.datetime.now()) +".png", format="PNG") 

を参照してください可能性がありますが、あなたは、ファイル名を変更した場合どのような...ええと

0

最初の提案は、インデックス値で色にアクセスすることは "Pythonic"ではありません。

for color in colors: 
    print(color) 

あなたのコードでは、ループの各反復でGraph.pngを上書きされます。その代わり、forループを使用します。各反復で新しいファイルを保存するには、各反復で出力ファイルの名前を変更するだけです。

import networkx as nx                        
import matplotlib.pyplot as plt            

fig = plt.figure(figsize=(12,12))           
ax = plt.subplot(111)              
ax.set_title('Graph - Shapes', fontsize=10)         

G = nx.DiGraph()                
G.add_node('shape1', level=1)            
G.add_node('shape2', level=2)            
G.add_node('shape3', level=2)            
G.add_node('shape4', level=3)            
G.add_edge('shape1', 'shape2')            
G.add_edge('shape1', 'shape3')            
G.add_edge('shape3', 'shape4')            
pos = nx.spring_layout(G)             
colors = ['yellow', 'red', 'blue', 'green']         
for i, color in enumerate(colors):           
    nx.draw(G, pos, node_size=1500, node_color=color, font_size=8, font_weight='bold') 
    plt.tight_layout()              
    plt.savefig('Graph_{}.png'.format(i), format="PNG")      
関連する問題