用Python实现树形图的绘制和可视化

2023-04-11 00:00:00 python 可视化 绘制

Python中可以使用很多库来实现树形图的绘制和可视化。以下是一些常用的库及其使用方法:

  1. matplotlib库

matplotlib是Python中最流行的绘图库之一,也可以用来绘制树形图。利用matplotlib的pyplot子库,可以轻松地完成树形图的绘制和可视化。以下是一份利用matplotlib绘制树形图的示例代码:

import matplotlib.pyplot as plt


class Node:
    def __init__(self, name):
        self.name = name
        self.children = []

    def add_child(self, node):
        self.children.append(node)


def plot_tree(node, x, y, dx, dy):
    plt.text(x, y, node.name, ha='center', va='center')
    x1 = x - len(node.children) * dx / 2
    for child in node.children:
        x2 = x1 + dx
        y2 = y - dy
        plt.plot([x, x2], [y, y2])
        plot_tree(child, x2, y2, dx, dy)
        x1 = x2


root = Node('pidancode.com')
root.add_child(Node('编程'))
root.add_child(Node('皮蛋'))
root.add_child(Node('Python'))
root.children[0].add_child(Node('Java'))
root.children[0].add_child(Node('C++'))
root.children[1].add_child(Node('人生'))
root.children[1].add_child(Node('你好'))
root.children[2].add_child(Node('Matplotlib'))
root.children[2].add_child(Node('Pandas'))


plot_tree(root, 0, 0, 1, 1)
plt.show()

在该代码中,我们首先定义了一个Node类,用于存储每个节点的信息。接着,我们利用该类创建了一个树形结构。最后,通过调用plot_tree函数,以树的结构将节点绘制出来。

  1. anytree库

anytree是一个专门为构建树形结构而设计的库。它提供了易于使用的API,可以让用户轻松地构建、修改和查询树形结构。以下是一份利用anytree绘制树形图的示例代码:

from anytree import Node, RenderTree
from anytree.exporter import DotExporter


root = Node('pidancode.com')
编程 = Node('编程', parent=root)
皮蛋 = Node('皮蛋', parent=root)
Python = Node('Python', parent=root)
Java = Node('Java', parent=编程)
C = Node('C++', parent=编程)
人生 = Node('人生', parent=皮蛋)
你好 = Node('你好', parent=皮蛋)
Matplotlib = Node('Matplotlib', parent=Python)
Pandas = Node('Pandas', parent=Python)


DotExporter(root).to_picture('tree.png')

在该代码中,我们先创建了一个根节点root,然后利用anytree的Node函数创建了其他节点,并通过parent属性将它们连接起来。最后,我们使用DotExporter将节点以图形的方式呈现出来,保存为一张图片。

  1. treelib库

treelib是Python中另一个能够绘制树形图的库。该库提供了丰富的功能,包括节点的添加、删除、遍历等。以下是一份利用treelib绘制树形图的示例代码:

from treelib import Node, Tree
from treelib.tree import RenderTreeGraph


tree = Tree()
tree.create_node('pidancode.com', 'root')
tree.create_node('编程', '编程', parent='root')
tree.create_node('Java', 'Java', parent='编程')
tree.create_node('C++', 'C++', parent='编程')
tree.create_node('皮蛋', '皮蛋', parent='root')
tree.create_node('人生', '人生', parent='皮蛋')
tree.create_node('你好', '你好', parent='皮蛋')
tree.create_node('Python', 'Python', parent='root')
tree.create_node('Matplotlib', 'Matplotlib', parent='Python')
tree.create_node('Pandas', 'Pandas', parent='Python')


for line in RenderTreeGraph(tree).by_attr('name'):
    print(line)


RenderTreeGraph(tree).to_picture('tree.png')

在该代码中,我们通过treelib的Tree类创建了一棵树形结构,并利用create_node方法添加节点。最后,我们利用RenderTreeGraph类将树形图呈现出来,并将其保存为一张图片。

以上是三个Python中常用的绘制树形图的库及其示例代码。您可以根据自己的需求选择其中任一库,并根据示例代码来制作您自己的树形图。

相关文章