我有一个大的数据集,类似于下面的截图:

我想要可视化整个数据集,如下图所示(在PowerPoint中付出了很大努力!)

对于整个数据集(最好是Python ),有什么方法可以这样做吗?但是如果在Excel中有一种方法,那就太好了。
任何帮助都将不胜感激!
谢谢。
发布于 2022-08-21 20:27:45
这里有一个Python的解决方案。它使用熊猫从excel文件加载数据,使用NetworkX从该数据创建网络,使用格拉维斯可视化网络。免责声明:我是gravis的作者,这是一个用于网络可视化的开源Python包。
import gravis as gv
import networkx as nx
import pandas as pd
df = pd.read_excel('data.xlsx')
x_scale = 100
y_scale = 60
colors = ['blue', 'orange', 'gray', '#ffcc55', 'lightblue', 'green', '#dddd00']
dg = nx.DiGraph()
entry_to_color = dict()
entry_counter = 0
dg.graph['node_shape'] = 'rectangle'
for i, col_name in enumerate(df.columns):
col = df[col_name]
for j, entry in enumerate(col):
node = str(i) + str(entry)
if entry not in entry_to_color:
entry_to_color[entry] = colors[entry_counter]
entry_counter += 1
dg.add_node(node, name=entry, x=i*x_scale, y=j*y_scale, i=i)
for i, n_name in enumerate(dg.nodes):
node = dg.nodes[n_name]
color = entry_to_color[node['name']]
node['color'] = color
node['label_color'] = color
for n1_name in dg.nodes:
for n2_name in dg.nodes:
n1 = dg.nodes[n1_name]
n2 = dg.nodes[n2_name]
if n1 != n2 and n1['name'] == n2['name'] and n2['i'] == n1['i']+1:
dg.add_edge(n1_name, n2_name, color=n1['color'])
gv.d3(dg, node_label_data_source='name')如果在木星笔记本中运行该代码,则输出如下,尽管它也可以在普通的Python解释器中完成:

https://datascience.stackexchange.com/questions/113300
复制相似问题