python-3.x - 基于属性着色节点
问题描述
我正在尝试构建一个脚本,该脚本可用于根据我.csv
分别输入到节点和边缘文件中的数据快速可视化网络。我一直在拼凑不同的代码,并具有以下内容:
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
G = nx.Graph()
df_nodes = pd.read_csv('nodelist-Copy1.csv')
df_edges = pd.read_csv('edgelist-Copy1.csv')
我的 nodelist.csv 文件包含以下列:Name
, Role
, Department
, Gender
. 我现在正在分析一个组织结构图,但节点属性可能会根据应用程序而改变
for index, row in df_nodes.iterrows():
G.add_node(row['Name'], role=row['Role'], department=row['Department'], gender=row['Gender'])
for index, row in df_edges.iterrows():
G.add_edges_from([(row['Source'], row['Target'])])
plt.figure(figsize=(25,25))
options = {
'edge_color': '#FFDEA2',
'width': 1,
'with_labels': True,
'font_size': '7',
}
color_map = {'F':'#f09494', 'M':'#eebcbc'}
colors = [color_map[G.nodes[node]['gender']] for node in G]
nx.draw(G, node_colors = colors, pos=nx.spring_layout(G, k=0.25, iterations=50), **options)
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()
不太清楚如何解决这个问题。我希望完成的是节点的颜色根据它们的属性而不同,在这种情况下是它们的性别。当我现在执行此代码时,我没有错误,但节点颜色没有改变
解决方案
我相信您试图在图表上访问的属性nodes
不是node
,这就是导致错误的原因。相反,试试这个:
colors = [color_map[G.nodes[node]['gender']] for node in G]
推荐阅读
- c++ - 当 `typename T::value_type` 被定义中后面的约束拒绝时,是否应该编译失败?
- node.js - 在开发容器和电子中加载共享库时出错
- arrays - 寻找满足给定约束并在 MATLAB 中提供所需输出的数组的解决方案
- node.js - axios ssl 调用HTTPS
- r - R编程:矩阵的值在哪里得分?
- r - 我想在 R 中创建一个双层饼图/甜甜圈图
- git - 带有 --invert-paths 标志的 Git filter-repo 不起作用
- javascript - 说明 flatList 中的多行
- binary - binconf 在低 n 时返回错误的置信度值?
- python-3.x - 如何从 Tfidvectorizer 添加停用词?