假设我是python中的一个给定的有向图:
V = [ 1, 2, 3, 4, 5]
E = {
1 : [ 2, 3, 4]
2: [ 1, 2, 3]
3 : [1, 4, 5]
4: [5]
5: [1, 3] }
c = [ 81, 23, 43, 22, 100]
V和E分别将图的顶点集和边集表示为列表和字典。并且c是顶点集合上的成本函数,即c(1)= 81,c(2)= 23等。现在我想可视化由(V,E)表示的图,这可以很容易地使用networkx包在2维中完成,但另外我想在变化的z轴上绘制这个图的顶点(而不是仅在xy平面上),以便z轴上每个顶点的“高度”等于其成本。
我怎么能这样做呢?
1条答案
按热度按时间cwxwcias1#
给你点东西让你开始。
正如您所指出的,
networkx.draw
将绘制一个二维图。点的位置可以从
networkx.spring_layout
函数中提取(这是调用draw
时点的默认布局)。示例(由于
networkx
布局函数的随机性,这些点将四处移动):按如下方式提取点:
顶点之间的连接可以从
E
dict中获得,如下所示:因此,我们可以像这样手动绘制图形:
现在,我们可以使用
plt.scatter
和三维投影轴来绘制高度:注:这些图不包括顶点2上的循环,您需要自己绘制。此外,这里绘制的图形是无向的,需要为您的有向边包括箭头