nxpdのドキュメントは、ipython内部のグラフを印刷する方法は非常にはっきりしていますが、グラフを.pngまたは.pdfとしてどのように保存しますか?以下のメソッドは、状態変化の確率と出力されたパスを含むデータフレーム(mc)を読み込み、グラフを保存します。 nxpdの描画をpyplotに渡す方法や内部の保存メソッドを使う方法は私には不明です。nxpdで生成されたグラフプロットを保存する
NXPDのドキュメントが限られている:https://github.com/chebee7i/nxpd
def DrawMarkov(mc, outputPath):
import matplotlib.pyplot as plt
from pandas import DataFrame
import networkx as nx
from nxpd import draw
## Draw as an internal to ipython
# draw(G, show='ipynb')
## OR
# from nxpd import nxpdParams
# nxpdParams['show'] = 'ipynb'
def Add_Nodes(G, name):
for node in range(0,len(mc)):
# print(node); print(type(node)); print(color_map[node])
G.add_node(node, style='filled', fillcolor=color_map[node],)
def Add_Edges(G,mc):
for start in range(0,len(mc[0])):
# print(start,'\n')
for finish in range(0,len(mc)):
# print(mc[start][finish])
if mc[start][finish]!=0:
G.add_edge(start, finish, weight=mc[start][finish], label=str(mc[start][finish]))
color_map = {0: 'lightblue',
1:'palegreen',
2:'lightcoral'}
## Plot DiGraph
G = nx.DiGraph()
Add_Nodes(G,mc)
Add_Edges(G,mc)
mapping={0:'State1', 1:'State2', 2:'State3'}
G = nx.relabel_nodes(G,mapping)
## Output
draw(G, layout='dot') # , show='ipynb' # unclear how to pass graph to plt
# plt.savefig(os.path.join(outputPath, 'Graph.png'))
どうなりますか?それがnetworkxのようなものだとすれば、そうするべきです。 – Joel
show = 'ipynb'引数が使用されていない場合、draw()は新しいプレビューウィンドウ(Mac上)に.pngを生成します。 plt.savefig( 'graph.png'): "AttributeError: 'str'オブジェクトに 'savefig'属性がありません。 – MyopicVisage
.pngファイルのオープンを抑制し、強制的に保存する方法はありますか? – MyopicVisage