我正在搜索绘制时空图的示例。我通过Graphviz但找不到相关的例子。我必须绘制一个计算机网络的图形,并假设网络在10秒后发生变化。我可以绘制一个场景,但现在我需要将在不同时间获得的不同图形组合为空间时间图。 我正在使用python进行绘图但是使用Graphviz,matplotlib,networkx等任何工具的任何相关示例都会有所帮助。
因此,对此有任何建议和指导都非常感谢。
谢谢
答案 0 :(得分:0)
我会使用matplotilb
执行此操作。这是最小的代码。使用散点而不是单独绘制积分并使用NaN
对不连续线进行游戏可能会更有效率,但这可行。有关椭圆示例,请参阅here。 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)
答案 1 :(得分:0)
谢谢你的答复。我已经做过一些事情,所以如果我不能这样做,我会深入研究你所建议的方式。现在我有:
但我想要这样的事情:
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”。