首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络可视化(Python/Excel)

网络可视化(Python/Excel)
EN

Data Science用户
提问于 2022-08-06 23:59:29
回答 1查看 307关注 0票数 0

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

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

对于整个数据集(最好是Python ),有什么方法可以这样做吗?但是如果在Excel中有一种方法,那就太好了。

任何帮助都将不胜感激!

谢谢。

EN

回答 1

Data Science用户

发布于 2022-08-21 20:27:45

这里有一个Python的解决方案。它使用熊猫从excel文件加载数据,使用NetworkX从该数据创建网络,使用格拉维斯可视化网络。免责声明:我是gravis的作者,这是一个用于网络可视化的开源Python包。

代码语言:javascript
复制
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解释器中完成:

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/113300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档