【问题标题】:I can't change the line thickness when displaying the graph显示图表时无法更改线条粗细
【发布时间】:2020-10-12 11:37:02
【问题描述】:

我有一个数据集。我正在基于它构建一个多重图。但是我不能改变线条的粗细。

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)

会话图

我的代码:

plt.figure(figsize=(20,20))
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",width=6)
    if row[4]==3:
       G.add_edge(row[1], row[2],label=row[3],color="red",width=0.4)
    if row[4]==4:
       G.add_edge(row[1], row[2],label=row[3],color="blue",width=0.4)
p=nx.drawing.nx_pydot.to_pydot(G)
p.write_png('multi.png')
Image(filename='multi.png')

输出:

在输出中,您可以看到所有厚度都相同,但我需要它们不同。 不知道如何改变线的宽度。

【问题讨论】:

标签: python graph networkx


【解决方案1】:

如果您想更改边缘厚度,请将penwidth 添加到您的参数中

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",width=6, penwidth=6)
    if row[4]==3:
       G.add_edge(row[1], row[2],label=row[3],color="red",width=0.4, penwidth=1)
    if row[4]==4:
       G.add_edge(row[1], row[2],label=row[3],color="blue",width=0.4, penwidth=1)

如果您以dot 格式绘制图形,您会发现问题出在 GraphViz 中 - 它忽略了权重参数但适用于 penwidth 参数,因此您需要将其传递给绘图库。
详情见Graphviz, changing the size of edge问题。

【讨论】:

    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2011-02-02
    • 1970-01-01
    • 2011-01-17
    • 2014-05-11
    相关资源
    最近更新 更多