显示图形时无法更改线条粗细
I can't change the line thickness when displaying the graph
我有一个数据集。我正在基于它构建一个多重图。但是我不能改变线的粗细。
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)
session_graph
我的代码:
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')
输出:
在输出中可以看到所有的厚度都是一样的,但是我需要它们不一样。
不知道如何更改线宽。
如果您想更改边缘厚度,请将 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 问题。
我有一个数据集。我正在基于它构建一个多重图。但是我不能改变线的粗细。
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)
session_graph
我的代码:
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')
输出:
在输出中可以看到所有的厚度都是一样的,但是我需要它们不一样。 不知道如何更改线宽。
如果您想更改边缘厚度,请将 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 问题。