Python 数据可视化 关系网络图

我想把数据可视化成下面类似的图,有什么办法吗?

数据是关联规则挖掘出的数据,我做了一些处理
就是我有5种元素,每种元素我根据其成分离散成10个size
元素用一个节点表示,同一个元素的节点大概聚在一块

img

img

你可以考虑使用python中的pyecharts实现,相当于是echarts绘图组件在python中的实现。用它可以实现节点间的关联效果,类似于:

img


或者使用制网络图的库:NetworkX,可以实现无多重边无向图、无多重边有向图、有多重边无向图、有多重边有向图。

参考GPT和自己的思路:您可以使用Python中的NetworkX和Matplotlib库来创建可视化的关系网络图。以下是一个示例代码,其中假设您已经使用pandas库将Excel文件读入DataFrame中:

import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd

# 读取Excel文件
df = pd.read_excel('your_file_name.xlsx')

# 创建一个空的有向图
G = nx.DiGraph()

# 将节点添加到图中
for element in df['A'].unique():
    nodes_of_element = df[df['A'] == element]
    for index, row in nodes_of_element.iterrows():
        G.add_node(row['B'], size=row['C'], color=row['D'])

# 将边添加到图中
for index, row in df.iterrows():
    G.add_edge(row['B'], row['F'], width=row['E'], color=row['D'])

# 设置节点的位置
pos = nx.spring_layout(G)

# 绘制节点
node_sizes = [node[1]['size']*10 for node in G.nodes(data=True)]
node_colors = [node[1]['color'] for node in G.nodes(data=True)]
nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=node_colors)

# 绘制边
edge_colors = [edge[2]['color'] for edge in G.edges(data=True)]
edge_widths = [edge[2]['width']*0.5 for edge in G.edges(data=True)]
nx.draw_networkx_edges(G, pos, edge_color=edge_colors, width=edge_widths)

# 添加标签
labels = {node[0]: node[0] for node in G.nodes(data=True)}
nx.draw_networkx_labels(G, pos, labels)

# 显示图形
plt.axis('off')
plt.show()


在这个示例代码中,我们首先创建一个空的有向图,并将元素的节点添加到图中。然后,我们将边添加到图中,并指定边的宽度和颜色。接下来,我们使用spring_layout函数为每个节点计算位置,并绘制节点和边。最后,我们添加标签并显示图形。您可以根据需要更改节点和边的属性,以及节点的位置布局算法。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^