从CSV创建树形图

时间:2019-02-01 13:27:02

标签: python graph treeview

我有以下csv文件(以下是示例),我想使用python生成站点地图:

  

title,url,id,parentid
  '首页','www.example.com','1111','0000'   'FirstPage','www.example.com/firstpage'、'2222'、'1111'   “第二页”,“ www.example.com/secondpage”,“ 3333”,“ 1111”

我认为最适合树状图。存在一对多关系。一个站点可以有多个子站点,但只能属于一个站点。我正在寻找一个简单的python库来实现这一目标,因为我对图形的经验不是很丰富。 graph

2 个答案:

答案 0 :(得分:1)

假设您有以下CSV文件:

  

title,url,id,parentid
  主页,www.example.com,1111,0000
  FirstPage,www.example.com / firstpage,2222,1111
  SecondPage,www.example.com / secondpage,3333,1111

针对CSV文件运行此脚本:

RUN echo "ipv6" >> /etc/modules

您会得到:

enter image description here

答案 1 :(得分:1)

在树旁边,可以使用python图形模块 networkx 对其进行描述。

import matplotlib.pyplot as plt
import networkx as nx
import csv
G=nx.DiGraph()
lables = {}
edge=[]
with open('test.csv') as f:
     reader = csv.reader(f)
     next(reader)  # skip the first line in the input file
     for i,row in enumerate(reader):
         print(row)
         lables[row[2]] = row[0]
         if i!= 0:
            edge.append((row[2],row[3]))
G.add_edges_from(edge)
# positions for all nodes
pos = nx.spring_layout(G)
# nodes
nx.draw_networkx_nodes(G, pos,node_size=1000)
# edges
nx.draw_networkx_edges(G, pos, with_labels = False ,width=6)
# labels
nx.draw_networkx_labels(G, pos,lables,font_size=16)
plt.axis('off')
plt.show()

site map