9

いくつかのグラフを DOT 形式で処理してレンダリングしようとしています。私が持っているドットファイルは大きく(〜300MB)、複数の有向グラフが含まれています

digraph 1 {...}
digraph 2 {...}
digraph 3 {...}

2 つの質問があります:
1. グラフ全体ではなく、ダイグラフを 1 つだけレンダリングすることは可能ですか? digraph 3のみをレンダリングする
ようなものはありますか?dot -3 -Tps mygraph.dot -o out.ps

2. ドット形式を処理するのに最適な Python ライブラリは何ですか? (他の言語も使用できます)試した 2 つを次に
示します が、十分ではありません." ノード名に。たとえば、失敗します
nd.nd [label="nd_node"]

pygraphviz "." を処理しますが、ファイルに複数のグラフ定義が指定されている場合、digraph 1 のみをインポートします:(

4

2 に答える 2

2

これがあなたが望んでいたものかどうかはわかりませんが、単純なパーサーまたは任意の名前を書く必要があるだけです。pygraphviz は、文字列入力の場合と同様に、読み取りと解析を行うだけでファイル入力を処理します。

したがって、コードのサンプルは次のようになります。

f = open(filename, 'r')
graph = [[]]
while True:
    line = f.readline()
    if not line:
        break
    if declare_new_graph(line):
        graph.append([])
    graph[-1].append(line)

#now you have a list of graphs
#each is a list of lines
#with first line containing the name
#to get the string representation of graph "i"
str = '\n'.join(graph[i])
于 2011-11-29T01:07:51.717 に答える
2

があるので、グラフ処理ツールdotもあるはずです。次のようgvprな簡単なスクリプトで 3 番目のグラフを印刷できます。gvpr

BEGIN { int count = 0; }
BEG_G {
    count = count + 1;
    if(count == 3) {
        write($G);
    }
}

次に、これをソース フィルターとして使用できます。

cat mygraph.dot | gvpr -f thirdgraph.gv | dot -Tps -o out.ps
于 2012-02-29T04:06:39.183 に答える