你能使我在networkx上的丑陋图变得漂亮吗?

时间:2018-07-12 07:47:56

标签: python draw networkx

我正在尝试表示和收集networkx上的数据。

但是我的图表看起来很可怕,例如:

Tableau_des_operations=[[0, 1508, 0, 1124, 7804, 3511, 5001, 175, 950],
[161, 359, 39, 358, 3216, 2029, 318, 101, 60],
[9, 869, 216, 1133, 14183, 4640, 5233, 232, 994],
[9, 674, 197, 834, 13094, 1403, 3596, 70, 683],
[437,   324, 60, 633, 5231, 3029, 1973, 151, 375],
[115, 608, 60, 658, 4105, 1644, 1680, 82, 319],
[112, 113, 451, 944, 19811, 2869, 531, 143, 100]]


t_op=Tableau_des_operations[1]

import networkx as nx 

achat_foncier=t_op[0]
cout_equipement=t_op[1]
cout_fonctionnement=t_op[2]
vente_promoteur=t_op[3]
cout_construction= t_op[4]
achat_logement=t_op[5]
achat_bureau=t_op[6]
tva_logement=t_op[7]
tva_bureau=t_op[8]

g=nx.Graph() # création du graphe g
arcs=[("Amenageur","Foncier"), ("Amenageur","Amenageur"), ("Amenageur","Ent_BTP"), ("Foncier","Amenageur"),("Promoteurs","Amenageur"),("Promoteurs","Ent_BTP"), ("Habitants","Promoteurs"),("Activites","Promoteurs")]
g.add_edges_from(arcs)


g["Amenageur"]["Foncier"]['weight']=t_op[0]
g["Amenageur"]["Foncier"]['nature']="achat foncier"
g["Amenageur"]["Foncier"]['vers']="Foncier"
g["Amenageur"]["Foncier"]['label']="Public"


g["Amenageur"]["Ent_BTP"]['weight']=t_op[1]
g["Amenageur"]["Ent_BTP"]['nature']="cout_equipement"
g["Amenageur"]["Ent_BTP"]['vers']="Ent_BTP"
g["Amenageur"]["Ent_BTP"]['label']="Public"

g["Promoteurs"]["Amenageur"]['weight']=t_op[3]
g["Promoteurs"]["Amenageur"]['nature']="vente foncier"
g["Promoteurs"]["Amenageur"]['vers']="Amenageur"
g["Promoteurs"]["Amenageur"]['label']="Public"

g["Amenageur"]["Amenageur"]['weight']=t_op[2]
g["Amenageur"]["Amenageur"]['nature']="cout de fonctionnement"
g["Amenageur"]["Amenageur"]['vers']= "non"
g["Amenageur"]["Amenageur"]['label']="Public"

g["Promoteurs"]["Ent_BTP"]['weight']=t_op[4]
g["Promoteurs"]["Ent_BTP"]['nature']="cout de construction"
g["Promoteurs"]["Ent_BTP"]['vers']="Ent_BTP"
g["Promoteurs"]["Ent_BTP"]['label']="Prive"

g["Habitants"]["Promoteurs"]['weight']=t_op[5]
g["Habitants"]["Promoteurs"]['nature']="achat_logement"
g["Habitants"]["Promoteurs"]['vers']="Promoteurs"
g["Habitants"]["Promoteurs"]['label']="Prive"

g["Activites"]["Promoteurs"]['weight']=t_op[6]
g["Activites"]["Promoteurs"]['nature']="achat_bureaux"
g["Activites"]["Promoteurs"]['vers']="Promoteurs"
g["Activites"]["Promoteurs"]['label']="Public"


import matplotlib.pyplot as plt

pos=nx.spring_layout(g)               #choix de l'algorithme
nx.draw(g, pos, with_labels=True)
nx.draw_networkx_edge_labels(g, pos, edge_labels=None, label_pos=0.5, font_size=10, font_color='k', font_family='serif', font_weight='normal', alpha=1.0, width=edgewidth, bbox=None, horizontalalignment='center', rotate=True)
nx.draw_networkx_labels(g,pos,g.edges(),font_size=16)
plt.show()

能否获得:

  • 可读标签
  • 花式节点
  • 花式边缘
  • 边缘的宽度与重量成比例

此外,如果您对代码有任何改进,欢迎您:)

谢谢!

苏菲

0 个答案:

没有答案