【问题标题】:How to draw a tree diagram from a large dictionary如何从大字典中绘制树形图
【发布时间】:2022-10-18 01:30:18
【问题描述】:

我的字典很大,基本上一些字典值相交,我想以图表的形式表示。

My_dictionary = { A : {1 , 2, 4 }, B : {1,3}, C : {5} ..... etc}

期望的结果是将节点 A、B、C 链接到字典值的这些端点的图表。我尝试了树形图和 graphviz,但仍然无法弄清楚如何自动化这个过程。我什至尝试通过将端点设为对角线并使用余弦相似度填充数据框来创建热图。请帮忙

【问题讨论】:

标签: python networkx graphviz graphing


【解决方案1】:

这是我对您要查找的内容的最佳猜测。

import networkx as nx

my_dictionary = { 'A' : {1 , 2, 4 }, 'B' : {1,3}, 'C' : {5}}
G = nx.Graph()
G.add_edges_from([k,x] for k,v in my_dictionary.items() for x in v)
nx.draw(G, pos = nx.bipartite_layout(G,my_dictionary.keys()), 
        with_labels = True, node_color = 'orange')

结果:


仅使用单边节点:

import networkx as nx
import matplotlib.pyplot as plt
from collections import defaultdict

my_dictionary = { 'A' : {1 , 2, 4 }, 'B' : {1,3}, 'C' : {5}}
G = nx.Graph()
G.add_edges_from([k,x] for k,v in my_dictionary.items() for x in v)

pos = nx.bipartite_layout(G,my_dictionary.keys())
nx.draw(G, pos = pos,with_labels = True, node_color = 'orange')
plt.show()

one_link_nodes = [n for n,k in G.degree if k==1]
G.remove_nodes_from(one_link_nodes)
# pos = nx.bipartite_layout(G,my_dictionary.keys()) # if you don't want to reuse the layout above
nx.draw(G, pos=pos, with_labels = True, node_color = 'orange')
plt.show()

结果图像:

【讨论】:

  • 你太棒了!!!
  • 在这种情况下,您如何仅显示具有多个链接的链接,仅绘制 A 和 B 仅链接到 1,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 2022-01-19
  • 2021-07-01
  • 1970-01-01
  • 2020-10-17
  • 2011-11-04
  • 1970-01-01
相关资源
最近更新 更多