首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从2列csv到2色NetworkX图

从2列csv到2色NetworkX图
EN

Stack Overflow用户
提问于 2015-06-09 20:38:13
回答 1查看 350关注 0票数 1

我想要创建一个大型的网络图形,将用户连接到他们观看的视频,就像社交图或网络图中的用户->视频一样。大约有9000个用户节点和20000个视频节点。

示例CSV文件

用户,视频

1,11

2,11

3、11

4、12

5、12

5、13

我在尝试什么?

代码语言:javascript
复制
G=nx.read_edgelist("test.csv", delimiter = ',', data=['user','highlight'], create_using=nx.Graph())

nx.draw(G)

我得到的是:一个所有红色节点的图。

我想要的是:我希望用户节点是红色的,视频节点是蓝色的。提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-09 22:21:02

代码语言:javascript
复制
import networkx as nx
import csv
import matplotlib.pyplot as plt;

file_edges=csv.reader(open('test.csv','rb'));

G=nx.Graph();
users=[];
video=[];
for row in file_edges:
    G.add_node(row[0],type='user');
    users.append(row[0]);
    G.add_node(row[1],type='video');
    video.append(row[1]);
    G.add_edge(row[0],row[1]);

pos=nx.spring_layout(G) # positions for all nodes
fig=plt.figure(1)
ax=fig.add_subplot(111);
nx.draw_networkx_nodes(G,pos=pos,nodelist=users,with_labels=True,node_size=150,node_color='red',node_shape='s', width=1.75,linewidths=0.2,font_size=5,font_family='serif')
nx.draw_networkx_nodes(G,pos=pos,nodelist=video,with_labels=True,node_size=150,node_color='blue',node_shape='s', width=1.75,linewidths=0.2,font_size=5,font_family='serif')
nx.draw_networkx_edges(G, pos=pos, edgelist=G.edges(), width=3, edge_color='black');
nx.draw_networkx_labels(G,pos,nodelabels=G.nodes(),font_size=8,font_family='serif',font_color='white',font_weight='bold')
ax.legend(['users','video'],loc=2,numpoints=1,scatterpoints=1,prop={'size':10}) # Scatterpoints will show the node marker (say square) only once
plt.gcf()
plt.axis('off')
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30742370

复制
相关文章

相似问题

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