【发布时间】: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