本文介绍了无法使用Networkx设置图表的权重的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无法为图形中的边缘设置权重.我的数据集

  dict_value = {'Источник':[10301.0,10301.0,10301.0,10301.0,10329.0,10332.0,10333.0,10334.0,174143.0,1030408.0,10306066.0],'Собеседник':[300.0,315.0,343.0,344.0,300.0,300.0,300.0,300.0,300.0,300.0,300.0],'Частота':[164975000,164975000,164437500,164975000,164975000,164975000,164975000,164975000,164975000,164975000,164975000],'БСLAC':[9,9,1,9,9,9,9,9,9,9,9],'Длительность':[20,3,2,2,3,3,2,3,3,3,3]}session_graph = pd.DataFrame(dict_value) 

我的代码:

  G = nx.MultiDiGraph()对于session_graph.itertuples()中的行:如果row [4] == 1:G.add_edge(第[1]行,第[2]行,标签=第[3]行,颜色=绿色",权重= 0.9)如果row [4] == 9:G.add_edge(行[1],行[2],标签=行[3],颜色=红色",权重= 0.4)p = nx.drawing.nx_pydot.to_pydot(G)p.write_png('multi.png')图片(filename ='multi.png') 

重量不变!我做错了吗?你帮我吗?

解决方案

如果要更改边缘厚度,请在参数中添加 penwidth

  G = nx.MultiDiGraph()对于session_graph.itertuples()中的行:如果row [4] == 1:G.add_edge(行[1],行[2],标签=行[3],颜色=绿色",权重= 0.9,笔宽= 5)如果row [4] == 9:G.add_edge(行[1],行[2],标签=行[3],颜色=红色",权重= 0.4,笔宽= 1) 

如果用 dot 格式绘制图形,您将看到问题出在GraphViz中-它忽略了weight参数,但可以使用 penwidth 参数,因此您需要将其传递到图形库.
有关详细信息,请参见

Can't set weight for edges in graph.My dataset

    dict_value={'Источник':[10301.0,10301.0,10301.0,10301.0,10329.0,10332.0,10333.0,10334.0,174143.0,1030408.0,10306066.0],  'Собеседник':[300.0,315.0,343.0,344.0,300.0,300.0,300.0,300.0,300.0,300.0,300.0],
'Частота':[164975000,164975000,164437500,164975000,164975000,164975000,164975000,164975000,164975000,164975000,164975000],
        'БС LAC':[9,9,1,9,9,9,9,9,9,9,9],
        'Длительность':[20,3,2,2,3,3,2,3,3,3,3]}
session_graph=pd.DataFrame(dict_value)

My code:

G = nx.MultiDiGraph()
for row in session_graph.itertuples():
    if row[4]==1:
       G.add_edge(row[1], row[2],label=row[3],color="green",weight=0.9)
    if row[4]==9:
       G.add_edge(row[1], row[2],label=row[3],color="red",weight=0.4)
p=nx.drawing.nx_pydot.to_pydot(G)
p.write_png('multi.png')
Image(filename='multi.png')

Weight don't change! What I do wrong?Con you help me?

解决方案

If you want to change edge thickness, add penwidth to your arguments

G = nx.MultiDiGraph()
for row in session_graph.itertuples():
    if row[4]==1:
       G.add_edge(row[1], row[2],label=row[3],color="green",weight=0.9, penwidth = 5)
    if row[4]==9:
       G.add_edge(row[1], row[2],label=row[3],color="red",weight=0.4, penwidth = 1)

If you draw your graph in dot format with you will see, that the problem is in GraphViz - it ignores weight argument but works with penwidth parameter, so you need to pass it to the drawing library.
See Graphviz, changing the size of edge question for details.

这篇关于无法使用Networkx设置图表的权重的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 11:59
查看更多