0

時空間グラフが描かれている例を探しています。Graphviz を調べましたが、関連する例が見つかりません。コンピューター ネットワークのグラフをプロットする必要があり、ネットワークは 10 秒後に変化すると想定されています。1 つのシナリオをプロットできますが、異なる時間に取得した異なるグラフを時空間グラフとして結合する必要があります。プロットに python を使用していますが、Graphviz、matplotlib、networkx などのツールを使用した関連する例は役に立ちます。

したがって、これに関するアドバイスやガイドラインは大歓迎です。

ありがとうございました

4

2 に答える 2

0

tcaswell さん、返信ありがとうございます。私はすでに何かに取り組んでいるので、そのようにできない場合は、あなたが提案した方法を掘り下げます. 今のところ私は持っています: ここに画像の説明を入力

しかし、私はこのようなものが欲しい:

ここに画像の説明を入力

この画像を作成するために GraphViz で使用される .dot ファイル コード:

graph {
    rankdir=LR;
    subgraph cluster01 {
        label="t=0"
        a0 [label="A"];
        a1 [label="B"];
        a2 [label="C"];
        a5 [label="E"];
        a0 -- a1;
        a1 -- a2 ;
        a2 -- a0;
    };

    subgraph cluster02
    {
        label="t=10"
        b0 [label="A"];
        b5 [label="E"];
        b1 [label="B"];
        b2 [label="C"];

        b0 -- b1;
        b2 -- b5;
    };

    a0--b0 [style=dotted];
    a1--b1 [style=dotted];
    a2--b2 [style=dotted];
    a5--b5 [style=dotted];
}

「rankdir」をうまくいじることができないと思います。

于 2012-09-16T12:28:34.120 に答える
0

を使用してこれを行いmatplotilbます。これは最小限のコードです。NaNポイントの個々のプロットや不連続な線でゲームをするのではなく、散布図でこれを行う方が効率的かもしれませんが、これはうまくいきます. 楕円の例 については、こちらを参照してください。text documentation、またはより洗練されたものにしたい場合は、docに注釈を付けます。

import matplotlib.pyplot as plt
import numpy as np

def plot_level(ax,t,location_map, link_pairs,shift_scale = 10):
    # add some code that adds the ellipse + time label    
    shift = np.array([0,t*shift_scale])

    # plot nodes + labels
    for key in location_map:
        pt_location = location_map[key] + shift
        ax.plot(pt_location[0],pt_location[1],'ok')
        ax.text(pt_location[0],pt_location[1],key + "%d"%t) # play with this to make it look good

    # plot connections
    for a,b in link_pairs:
        ax.plot(*(np.vstack((location_map[a],location_map[b])) + shift.T).T,color='k')
    plt.draw()


location_map = {}
location_map['A'] = np.array([0,0])
location_map['B'] = np.array([1,1])
location_map['C'] = np.array([2,0])
location_map['D'] = np.array([3,1])

link_pairs1 = [('A','B')]
link_pairs2 = [('B','C')]

fig = plt.figure()
ax = plt.gca()
ax.yaxis.set_visible(False)
ax.xaxis.set_visible(False)
# function_that_draws_axes_marker
plot_level(gca(),0,location_map,[])
plot_level(gca(),1,location_map,link_pairs1)
plot_level(gca(),2,location_map,link_pairs2)
# function_that_draws_vertical_lines(t_range,location_map,shift_scale=10)
于 2012-09-15T17:27:56.893 に答える