如何可视化(树状图)一个层次项目字典?

2024-04-27 02:17:35 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次用Python从字典格式的分层数据中进行可视化。数据的最后一部分如下所示:

d = {^2820: [^391, ^1024], ^2821: [^759, 'w', ^118, ^51], ^2822: [^291, 'o'], ^2823: [^25, ^64], ^2824: [^177, ^2459], ^2825: [^338, ^1946], ^2826: [^186, ^1511], ^2827: [^162, 'i']}

所以我在列表上有索引,引用字典的键(索引)。我想这可以作为可视化的基础结构,如果我错了,请纠正我。数据中的字符是“end nodes/leaves”,它不引用任何索引。

我发现NetworkX可能用于可视化,但我不知道从哪里开始使用它和我的数据。我希望事情能简单到:

import networkx as nx
import matplotlib.pyplot as plt

d = {^2820: [^391, ^1024], ^2821: [^759, 'w', ^118, ^51], ^2822: [^291, 'o'], ^2823: [^25, ^64], ^2824: [^177, ^2459], ^2825: [^338, ^1946], ^2826: [^186, ^1511], ^2827: [^162, 'i']}

G = nx.Graph(d)
nx.draw(G)
plt.show()

我正在寻找层次树状图或某种聚类作为输出。很抱歉,现在我不确定什么是最好的可视化,可能类似于:

Dendrogram

更新

使用NetworkX实际上非常简单。我正在提供其他简单的样本数据,并寻找一个答案,如果它可以可视化的树状图,而不是有线网络图?

# original sequence: a,b,c,d,b,c,a,b,c,d,b,c
d = {^1: ['b', 'c'], ^2: ['a', ^1, 'd', ^1], 'S': [^2, ^2]}
G = nx.Graph(d)
nx.draw_spring(G, node_size=300, with_labels=True)

NetworkX draw_spring nx.Graph

如我们所见,图显示的是简单的关系,但不是我愿意做的数据的层次和顺序。有向图给出了更多细节,但仍然无法从中构造原始序列:

NetworkX draw_spring nx.DiGraph

对于树状图,显然需要根据第一个答案计算权值和端点节点。对于这种方法,数据结构可能是这样的:

d = {'a': [], 'b': [], 'c': [], 'd': [], ^1: ['b', 'c'], ^2: ['a', ^1, 'd', ^1], 'S': [^2, ^2]}

Tags: 数据答案importnetworkx列表字典可视化分层