python如何入门树状图

踏入树状图领域的循序渐进的一连串做法有, 透彻领会树状图基木概念, 挑选契合、恰当的一种库, 钻研利用所挑的库弄出简约的树状草图, 精通、把握树状图的高层次、更高级的特性情形, 去实际操作多种不同的应用状况、场景。当中, 挑取、选定适合、恰当的库属于迈向成功的关键的一步, 这是由于不一样的库存在不一样的长处以及合适应用的范围、场景。

挑选恰当的库, 于其中, 存在多个库能够用以绘制树状图, 像, 还有, 以及等等。每一个库都具备其特有的优势与特性。针对绘制简易的、简单的树状图而设, 适用于繁杂的、复杂的网络结构, 提供了强大有力的图形绘制功能, 专注着、进而专注于层次聚类形式的、而且是树状图层面的功能方面。抉择合适的库, 能够极大程度地简化绘图的进程, 提升效率。

一、理解树状图的基本概念

用于展示数据层次结构的一种图形表示方式是树状图 , 它由表示数据元素的节点和表示元素之间关系的边组成 , 树状图在计算机科学 、生物信息学 、数据分析等领域有着广泛应用。

具根节点、子节点以及叶节点, 此为构成树状图的基本结构。其中根节点乃树状图起始之处, 子节点则是自根节点延伸且承续其后续的节点, 至于叶节点指的是那种不存在子节点的终端性质节点。而树状图存在有序或无序这两种情况, 其究竟是有序还是无序, 具体得依据应用场景来确定。

二、选择合适的库

在中,有多个库可以用于绘制树状图。以下是一些常用库的介绍:

1、

它是一个很强大的2D绘图库, 可用来绘制各类图形, 其中涵盖树状图, 虽是主要用于绘制较为简单的树状图, 然而它的灵活性极大, 是在数据可视化这一方面有着灵活性。

import matplotlib.pyplot as plt

import networkx as nx

创建一个空的无向图

G = nx.Graph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

绘制树状图

pos = nx.spring_layout(G)

nx.draw(G, pos, with_labels=True, node_size=3000, node_color='skyblue', font_size=20, font_color='black')

plt.show()

2、

它是一个库, 这个库用于创建复杂网络结构, 还能操作复杂网络结构, 并且可对其进行研究, 它适合处理复杂的树状图, 另外它提供了丰富的函数, 也提供了丰富的方法, 借助这些丰富的函数和方法能够轻松地进行图形操作, 还能够轻松地进行图形分析。

import networkx as nx

import matplotlib.pyplot as plt

创建一个有向图

G = nx.DiGraph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

绘制树状图

pos = nx.spring_layout(G)

nx.draw(G, pos, with_labels=True, node_size=3000, node_color='skyblue', font_size=20, font_color='black', arrows=True)

plt.show()

3、

这是一款软件, 它具备这样的特性, 它属于开源性质, 它专门用于图形可视化, 它很适宜去绘制复杂样式的树状图形以及别的类型的图形结构, 它能够提供强大的图形绘制相关功能, 它可以促成生成高质量的图形。

from graphviz import Digraph

创建一个有向图

dot = Digraph()

添加节点和边

dot.node('A')

dot.node('B')

dot.node('C')

dot.node('D')

dot.node('E')

dot.edges(['AB', 'AC', 'BD', 'BE'])

绘制树状图

dot.render('tree', format='png', view=True)

4、

是一个库, 该库专注于层次聚类树状图, 适合对层次聚类进行分析, 它能够显示聚类结果所具有的层次结构, 用以帮助用户理解数据的分组状况。

import matplotlib.pyplot as plt

from scipy.cluster.hierarchy import dendrogram, linkage

创建样本数据

data = [[1, 2], [3, 4], [5, 6], [7, 8]]

进行层次聚类

Z = linkage(data, 'ward')

绘制树状图

dendrogram(Z)

plt.show()

三、学习使用库绘制简单的树状图

展开库来绘制树状图的流程涵盖: 将相关库予以导入, 去创建图形方面的对象, 为其添加节点以及边, 对图形的属性进行设定, 最后开展图形的绘制工作。下面是一个简单的示例, 关于运用以及绘制树状图:

import matplotlib.pyplot as plt

import networkx as nx

创建一个空的无向图

G = nx.Graph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

设置图形属性

pos = nx.spring_layout(G)

node_color = 'skyblue'

node_size = 3000

font_size = 20

font_color = 'black'

绘制树状图

nx.draw(G, pos, with_labels=True, node_size=node_size, node_color=node_color, font_size=font_size, font_color=font_color)

plt.show()

四、掌握树状图的高级特性

树状图具备的高级特性涵盖, 节点样式的布置设定, 边样式的装设调整呢, 还有自定义设计空间布局的方式, 交互所拥有的各项功能等等这些方面哩。往下呈现的是关于一些高级特性的阐释解说哟∶。

1、节点和边的样式设置

树状图能借助设置包括节点以及边那样的样式, 从而实现变得更为美观且较易领会, 像把节点的颜色、体积、造型设置一下, 把边的颜色、厚度、款式等进行设定这样的情况。

import matplotlib.pyplot as plt

import networkx as nx

创建一个空的无向图

G = nx.Graph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

设置节点和边的样式

pos = nx.spring_layout(G)

node_color = ['skyblue', 'lightgreen', 'lightcoral', 'lightpink', 'lightyellow']

node_size = [3000, 2500, 2000, 1500, 1000]

edge_color = 'gray'

width = 2

绘制树状图

nx.draw(G, pos, with_labels=True, node_size=node_size, node_color=node_color, edge_color=edge_color, width=width, font_size=20, font_color='black')

plt.show()

2、自定义布局

借助自我定义架构方式, 会让树类型图鉴更契合实际运用需求。举例而言, 能够运用层级架构模式,还有放射状架构模式, 以及网格状架构模式等。

import matplotlib.pyplot as plt

import networkx as nx

创建一个空的无向图

G = nx.Graph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

自定义布局

pos = nx.shell_layout(G)

绘制树状图

nx.draw(G, pos, with_labels=True, node_size=3000, node_color='skyblue', font_size=20, font_color='black')

plt.show()

3、交互功能

凭借增添交互功能, 致使树状图变得更为动态以及具备可操作性, 举例来说, 能够运用工具提示、缩放、拖动等功能, 以此强化用户体验。

import matplotlib.pyplot as plt

import networkx as nx

from bokeh.io import show, output_notebook

from bokeh.plotting import figure, from_networkx

from bokeh.models import HoverTool

创建一个空的无向图

G = nx.Graph()

添加节点和边

G.add_edge('A', 'B')

G.add_edge('A', 'C')

G.add_edge('B', 'D')

G.add_edge('B', 'E')

创建Bokeh图形对象

plot = figure(title="Interactive Tree Diagram", x_range=(-2, 2), y_range=(-2, 2), tools="", toolbar_location=None)

添加工具提示

hover_tool = HoverTool(tooltips=[("Node", "@index")])

plot.add_tools(hover_tool)

将NetworkX图形转换为Bokeh图形

graph = from_networkx(G, nx.spring_layout, scale=2, center=(0, 0))

plot.renderers.append(graph)

显示图形

output_notebook()

show(plot)

五、实践多种应用场景

各种应用场景里, 树状图有着广 泛 的 应 用, 像组织结构图, 举个例子, 还有决策树, 再比如文件目录结构等也都用到它。多多体验不同的应用场景, 就能够进一步熟练掌握树状图的绘制技巧以及应用方法。

1、组织结构图

揭示企业或者组织那包含部门、岗位以及人员等方面情况的阶层序列的存在意义进而被设计被运用的组织结构图, 能够凭借树状图这种以直观模样呈现这样序列并且来助力用户领悟组织架构的方式来实现架构展示。

import matplotlib.pyplot as plt

import networkx as nx

创建一个空的无向图

G = nx.DiGraph()

添加节点和边

G.add_edge('CEO', 'CTO')

G.add_edge('CEO', 'CFO')

G.add_edge('CTO', 'Dev Manager')

G.add_edge('CTO', 'QA Manager')

G.add_edge('CFO', 'Account Manager')

设置图形属性

pos = nx.spring_layout(G)

node_color = 'lightblue'

node_size = 3000

font_size = 20

font_color = 'black'

绘制组织结构图

nx.draw(G, pos, with_labels=True, node_size=node_size, node_color=node_color, font_size=font_size, font_color=font_color, arrows=True)

plt.show()

2、决策树

用于展示决策过程以及结果的决策树, 涵盖了决策节点、分支还有叶节点等方面的信息。将决策树借助树状图直观地进行展示, 能够辅助用户去理解决策过程。

import matplotlib.pyplot as plt

from sklearn import tree

创建样本数据和标签

X = [[0, 0], [1, 1]]

y = [0, 1]

训练决策树模型

clf = tree.DecisionTreeClassifier()

clf = clf.fit(X, y)

绘制决策树

plt.figure(figsize=(10, 8))

tree.plot_tree(clf, filled=True)

plt.show()

3、文件目录结构

文件目录结构是用来呈现文件以及文件夹的层次关系的, 其中涵盖根目录、子目录与文件等各类信息。能够借由树状图的形式直观地将文件目录结构展示出来, 以此助力用户去理解文件系统。

import os

import matplotlib.pyplot as plt

import networkx as nx

获取文件目录结构

def get_directory_structure(root_dir):

dir_structure = {}

for dirpath, dirnames, filenames in os.walk(root_dir):

dir_structure[dirpath] = dirnames + filenames

return dir_structure

创建文件目录树状图

def create_directory_tree(root_dir):

G = nx.DiGraph()

dir_structure = get_directory_structure(root_dir)

for dirpath, items in dir_structure.items():

for item in items:

G.add_edge(dirpath, os.path.join(dirpath, item))

return G

绘制文件目录树状图

root_dir = 'your_directory_path'

G = create_directory_tree(root_dir)

pos = nx.spring_layout(G)

nx.draw(G, pos, with_labels=True, node_size=3000, node_color='lightgreen', font_size=10, font_color='black', arrows=True)

plt.show()

4、层次聚类分析

用层次聚类分析来展现数据的分组情形, 这里面涵盖着聚类结果的层次架构, 可以借助树状图直观地去呈现层次聚类的结果, 以此助力用户弄明白数据的分组状况。

import matplotlib.pyplot as plt

from scipy.cluster.hierarchy import dendrogram, linkage

创建样本数据

data = [[1, 2], [3, 4], [5, 6], [7, 8]]

进行层次聚类

Z = linkage(data, 'ward')

绘制层次聚类树状图

plt.figure(figsize=(10, 8))

dendrogram(Z)

plt.show()

借助以上所做的介绍以及所举的示例, 对怎样去使用绘制树状图您能够初步有所了解, 并且能掌握某些基本以及高级的绘制技巧, 期望这些内容对您开启树状图的入门之路会有帮助。

相关问答FAQs:

如何在中创建树状图?

有能力在其内着手建树状图这个行为能够选用数目更多的库, 举例而言哈、以及等等诸多个例。落实具体使用的阶段之时, 凭借相关模块的plot功能能够描绘出具备基础性质的树状图形态。借助针对坐标轴给予设置以及对标签进行有效设定这样的方式去着力优化图形本身所具备的可阅读性能。万一有这样的想法即期望建树状图趋向显得更为复杂一些, 那么可以斟酌考虑采用 , 它能够提供交互式的此类图形方面的支撑助力, 如此一来就致使使用者能够更加从直观角度去完成对数据的探究行为。

什么是树状图,它的应用场景有哪些?

作为一种用于呈现层次结构的数据可视化方面的工具, 树状图常常被用来展现分类数据的分布情况, 或者是组织架构, 又或者是决策过程。它常见的应用的情景涵盖了公司等结构的组织结构图, 还有产品分类呈现以及决策树分析等。借助树状图, 用户能够一眼就清楚看到数据的层次关系, 进而有助于更有效地理解复杂的信息。

学习绘制树状图需要掌握哪些基础知识?

若要绘制树状图, 用户所需掌握的基本语法, 以及数据处理库, 比如。明白数据结构以及怎样去组织数据是极为重要之举。除此之外, 熟悉或者其他可视化库的基本运用方法亦是不可或缺的。建议借助实例去练习, 一步步提升图形绘制的能力, 从简单的图形着手, 渐渐去挑战更为复杂的项目。

Python入门树状图步骤_选择合适的Python库绘制树状图_Python树

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐