【问题标题】:Edge labels in networkx not on edgesnetworkx 中的边缘标签不在边缘上
【发布时间】:2019-11-14 18:33:35
【问题描述】:

首先我要说的是,我们对这方面非常陌生,因为我们现在正在上高中 Python 课程。我们正在共同完成老师给出的一个项目,该项目要求我们从 repl.it 上提供给我们的表格中制作一种地图。我们使用 networkx 和 matplotlib 绘制了地图,但是每当我们尝试向边缘添加标签时,它都无法正确绘制。 (这是我们第一次使用这些模块)

编辑:原来我们的一位项目成员在我发布之前弄乱了代码。我们现在的标签大部分都在行上,但间距仍然不正确,这意味着其中大部分是不可读的。基本上,我们现在想知道如何正确格式化图形,使其可读且间距正确。我更新了下面的代码

import matplotlib as mpl
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.use('Agg')
import networkx as nx
import pandas as pd
import replit as re

df = pd.read_csv('map.txt')

df = df.nsmallest(129,'startbuilding')
print(df)
startb = df.loc[:,'startbuilding']
endb = df.loc[:,'EndBuilding']
totd = df.loc[:,'TOTDIS']
outd = df.loc[:,'OUTDis']

print("Loading...")
re.clear()
G = nx.DiGraph()
plt.figure()

nodes = []



for i in range(len(startb)):
  if startb[i] not in nodes:
    nodes.append(startb[i]) 


print(nodes)


G.add_nodes_from(nodes)

for i in (range(len(startb))):
  G.add_edge(startb[i],endb[i],length=totd[i])


pos = nx.spring_layout(G, dim=2, k=None, fixed=None, iterations=50, weight='weight', scale=2.0)






nx.draw_networkx_edge_labels(G,pos = pos ,font_size = 3)


plt.axis('off')
nx.draw(G, with_labels = True,pos = pos)
plt.show()
plt.savefig('map.png')

间距很奇怪,图表不可读:

【问题讨论】:

  • 这可能违反直觉,但标签从边缘方向旋转了 90 度。
  • 如何解决这个问题
  • 您能解释一下您希望它如何显示吗? “间距不正确”是什么意思?
  • nx.draw_networkx_edge_labels(G, pos=pos, font_size= 3) 的字体真的很小。
  • nx.spring_layout 中更好地使用weight=None,这样边长将或多或少相等

标签: python pandas matplotlib networkx


【解决方案1】:

事实证明,我们最终只是单独绘制了每个节点并放弃了绘图算法,现在效果很好。感谢所有回复建议的人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2021-02-16
    • 2023-03-22
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多