【问题标题】:How to properly position edge labels on the edges of graph using networkx?如何使用networkx在图形边缘正确定位边缘标签?
【发布时间】:2022-01-20 11:22:29
【问题描述】:

我已经编写了一个代码来从 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()


这种图像我得到的边缘标签位置不正确。我想将这些边缘标签放在边缘上:

link for csv file

this is the csv file i was using

【问题讨论】:

  • 你能提供一个minimal example吗?这将有助于我们回答您的问题并缩小原因的数量。
  • 我已将代码编辑到最低限度并删除了不必要的内容。基本上,如果您看到边缘上方的标签在飞扬,我想将它们定位在边缘并对齐它们。提前致谢帮助
  • 问题是我们没有 csv/data 并且可能像 pandas 数据框这样的东西对绘图问题没有影响。
  • 请不要发布代码/数据/错误消息的图像。将文本直接发布在 SO 上,并指定这是显示的图形、存储的图形还是两者都有问题。另外,我建议阅读How to make good reproducible pandas examples
  • 我已将我的代码添加到我的结果图中,其中我的边缘标签未正确放置在边缘上(这是问题),并且还添加了指向 csv 文件的链接。您能帮我定位或对齐吗边缘上的边缘标签正确

标签: python pandas matplotlib graph networkx


【解决方案1】:

而不是

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'))

【讨论】:

  • 它帮助我将标签正确定位在边缘上,但边缘之间的间距仍然非常小,并且每次它都在制作随机形状图。如果你能提出建议,我将非常感谢你我如何增加边缘之间的间距并使我的图表更具可读性
猜你喜欢
  • 2022-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2020-06-24
  • 2018-04-16
  • 2015-12-30
  • 2021-02-16
相关资源
最近更新 更多