python画多层网络_在pymn中修改多层网络图

这里有一个解决方案,您只使用networkx来创建多层图,并且您可以自己计算节点位置。在

为了解释这个问题,我们随机创建了一个由30个节点组成的小图。在

层是具有附加属性的子图:(x,y)坐标和颜色。

坐标用于在二维网格中相对定位图层。在import networkx as nx

# create a random graph of 30 nodes

graph = nx.fast_gnp_random_graph(30, .2, seed=2019)

# Layers have coordinates and colors

layers = [

(nx.Graph(), (0, 0), "#ffaaaa"),

(nx.Graph(), (0, 1), "#aaffaa"),

(nx.Graph(), (0, 2), "#aaaaff"),

(nx.Graph(), (1, 2), "#ffa500"),

]

每个层都填充了主图形的节点。

在这里,我们决定将节点列表分成不同的范围(图中节点的开始和结束索引)。在

每个节点的颜色存储在颜色映射中。

此变量将在稍后的图形绘制过程中使用。在

^{pr2}$

然后,我们可以计算出每个节点的位置。

根据层坐标移动节点位置。在# Calculate and move the nodes position

all_pos = {}

for layer, (sx, sy), color in layers:

pos = nx.circular_layout(layer, scale=2) # or spring_layout...

for node in pos:

all_pos[node] = pos[node]

all_pos[node] += (10 * sx, 10 * sy)

我们现在可以绘制图表:import matplotlib.pyplot as plt

# Draw and display the graph

nx.draw(graph, all_pos, node_size=500, node_color=color_map, with_labels=True)

plt.show()

结果如下:

66d26432f80efb9ca879b04333fee0e6.png

当然,您可以使用三维栅格并使用投影来进行类似于三维的预览。在

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值