4

networkX と matplotlib で巨大なグラフを描く

私は基本的に、リンクされた質問を再質問しています。質問を説明するより良い仕事ができると思います。大きなグラフで mathplotlib.show() を呼び出すと、デフォルトはズームアウトされ、クラスター化された出力になります。私が望む最終状態は、レポートで使用するためにプロットを保存するために、mathplotlib.savefig() を使用することです。ただし、savefig() の出力は縮小されすぎており、一般的すぎます。画像サイズまたは dpi を変更しても、これは修正されません。ズームアウトした画像を大きくするだけです。UI を使用せずにグラフを拡大して保存する方法はありますか? UI を使用すると、拡大したり、ノードを広げたり、問題のノードを中心に配置したりできますが、これを自動的に行う方法がわかりません。

関連コード:

    nx.draw(G,pos,node_color=colorvalues, with_labels = False,node_size=values)
    fig.set_size_inches(11,8.5)
    if show ==0:
        plt.show()
    if show ==1:   
        plt.savefig(name+" coremem.png",bbox_inches=0,orientation='landscape',pad_inches=0.1)
4

2 に答える 2

3

ax.set_xlimと を使用して、プロットの範囲をax.set_ylim設定できます。例えば、xy

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

filename = '/tmp/graph.png'
G = nx.complete_graph(10)
pos = nx.spring_layout(G)
xy = np.row_stack([point for key, point in pos.iteritems()])
x, y = np.median(xy, axis=0)
fig, ax = plt.subplots()
nx.draw(G, pos, with_labels=False, node_size=1)
ax.set_xlim(x-0.25, x+0.25)
ax.set_ylim(y-0.25, y+0.25)
plt.savefig(filename, bbox_inches=0, orientation='landscape', pad_inches=0.1)

ここに画像の説明を入力


ax.set_xlim( と を呼び出す前に)元の制限を調べるには、次ax.set_ylimを使用します。

>>> ax.get_xlim()
(-0.20000000000000001, 1.2000000000000002)

ax.get_ylim()
(-0.20000000000000001, 1.2000000000000002)
于 2013-07-03T19:20:09.627 に答える
0

私の知る限り、ズームはできませんが、軸を設定することはできます。たとえば、元のグラフが両方の軸で 1 から 100 になる場合、プログラムで 30 から 40 だけに変更して保存することができます。

于 2013-07-03T19:19:46.103 に答える