繁体   English   中英

如何使用networkx正确地在图形边缘上使用position边缘标签?

[英]How to properly position edge labels on the edges of graph using networkx?

我已经编写了一个代码来从 csv 文件创建一个图形,如下所示

import matplotlib.pyplot as plt
import networkx as nx
import pandas as pd
df = pd.read_csv("pracmap.csv")
g = nx.Graph()
Vlandict = {}
for idx, e in df.iterrows():
    edge_list = []
    EL={}
    ctr = 1
    for dev in ['DEVICE1', 'DEVICE3', 'DEVICE4', 'DEVICE2']:
        # print(e[dev])
        if e[dev] == "NONE":
            continue
        edge_list.append(e[dev])
        # print(edge_list)

        if ctr == 2:
            unode = edge_list[0]
            vnode = edge_list[1]
            Vlandict[(unode, vnode)] = e['VLAN']
            edge_list.reverse()
            edge_list.pop()

        else:
            ctr = ctr +1
print(g.nodes)
pos = nx.spring_layout(g, k=0.5, iterations=20)
nx.draw_networkx_edge_labels(g, pos, edge_labels=Vlandict, font_color='green',label_pos=0.5, rotate=False, font_size=8)
nx.draw(g, with_labels=1,node_shape="s",bbox=dict(facecolor="orange", edgecolor='black', boxstyle='round,pad=0.2'))
plt.savefig("pracmappp.png", format="PNG")
plt.show()


这种图像我得到的边缘标签位置不正确。 我想 position 这些边缘标签在边缘:点击这里查看图片

csv 文件的链接

这是我使用的 csv 文件

代替

nx.draw(g, with_labels=1,node_shape="s",bbox=dict(facecolor="orange", edgecolor='black', boxstyle='round,pad=0.2'))

利用

nx.draw(g, pos=pos, with_labels=1,node_shape="s",bbox=dict(facecolor="orange", edgecolor='black', boxstyle='round,pad=0.2'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM